User talk:Paddy3118

From Rosetta Code


zkl "Aliquot sequence classifications" incomplete[edit]

Hi - you flagged this as incomplete due to lack of 140737488355328 check. Actually, it is there as (2).pow(47). So I added a comment and removed the flag. Hopefully OK now. Thanks, Craig[edit]

Sad, but I like to see how my tasks are faring over time:

Archived to User talk:Paddy3118/Vanity Search

Vanity Search Updated[edit]

After the 4th of July RC updates, My RC Vanity Searcher needed to be updated due to HTML changes. I decided to add a modification, that shows the movement between the order a page was created in, vs the max views order called +/-.

Moved to User talk:Paddy3118/Vanity Search Updated ...

Yet more Vanity searches[edit]

Forgive me for I have sinned. It has been many months since posted my Vanity search data due to a site update causing my script to need updating, and I just couldn't be *rsed.

Poly thanks[edit]

Thanks but if you needed you see the example to get it clearer... it means the pseudocode is not too much clear:D More over, implemeting Octave solution, I've discovered it's more convenient to keep the higher power first (in the "vectors"), so likely I am going to rewrite the pseudocode ;) ... --ShinTakezou 16:31, 18 June 2009 (UTC)

Ethiopian Multiplication[edit]

Chalk one up to your vanity search; Ethiopian Multiplication has been the single biggest landing page for Sunday and Monday this week. There's been a huge influx of traffic to it via StumbleUpon. --Short Circuit 02:13, 25 August 2009 (UTC)

Yah!! (I hope the traffic is OK on your servers though)?
Lets hope some stay for a browse around the whole site... --Paddy3118 03:48, 25 August 2009 (UTC)
According to the analytics the bounce rate for stumbleupon referrals for the last three days is about 70%. So some did stay to look around. --Mwn3d 18:32, 25 August 2009 (UTC)

It is great that people are staying to look around, but I am puzzled? I can't find what is sending people to the Ethiopian Multiplication page on the Web. Any links? --Paddy3118 18:21, 26 August 2009 (UTC) --Mwn3d 18:22, 26 August 2009 (UTC)
That one mention means so many hits? Wow. I thought only /. and reddit had that kind of affect. --Paddy3118 18:48, 26 August 2009 (UTC)
Well that link is from a while ago. Someone else must have found it and put a link to that SU link somewhere else. I'm not sure how to figure out where though. --Mwn3d 18:56, 26 August 2009 (UTC)
It wasn't slashdot, digg or front-page-reddit level. Those would have resulted in tens of thousands of visits over a day. Peak traffic so far was Monday, where Google Analytics claims as much as 7.7 page views per minute. (Which is actually a bit off, as GA won't register raw, json or css page requests, so the requests would have been much more clumped, or bot edits, which it wouldn't see at all.) There were 368% more visits Monday(3,768) than the previous Monday(804). Each visit monday averaged 1.79 pages/visit, while the previous Monday averaged 3.56. These wouldn't be hard loads for most setups, but we've been riding close to the limits of the Slice under bursty loads for quite a while. I've got an offer to be pretty much the sole occupant of a 4-core Xeon box with 16GB of RAM, but It'll be a gradual transition, if it goes through at all; I won't have root, and I'm uncertain about the current admin's reaction time. Otherwise, I need to find an income source for RC. My number one desire would be to sell content-derived books, but selling t-shirts and the like, even at $5 markup each, would easily make the site pay for itself as it currently sits; Five t-shirts a month would do it. The next most likely option is a donation link, but I hate asking for handouts. And I hate banner ads even more. --Short Circuit 21:22, 26 August 2009 (UTC)

Um... I have just seen one of the last pages I created jump to the HEAD of my vanity list, and by a huge margin! After seeing the figures (below), I'm gob-smacked!

   22   7261 +31 Ethiopian Multiplication
   71   3276 +11 Knapsack Problem
   90   2910  -1 Monty Hall simulation
  104   2698  +4 Conway's Game of Life
  121   2350  +0 Anagrams
  197   1486  +1 One dimensional cellular automata
  206   1388  -4 Web Scraping
  209   1317  -2 Max Licenses In Use
  220   1263  -8 Spiral
  235   1112 +10 Y combinator
  260    994  +3 Yuletide Holiday
  261    989  -8 Sequence of Non-squares
  262    983  -2 Column Aligner
  272    928  +5 First-class functions
  288    836  -6 Data Munging
  297    814  -6 Data Munging 2
  300    803  -5 Probabilistic Choice
  304    794  +7 Bulls and Cows
  306    783  -1 Command Line Interpreter
  310    772  +4 Mutual Recursion
  338    682  +0 Functional Composition
  371    605  -5 Integer literals
  386    554  -8 Common number base formatting
  395    533  -1 Look-and-say sequence
  418    473  -9 Octal
  443    428  -4 Exceptions Through Nested Calls
  466    344  +2 Average/Simple moving average
  490    298  -2 Testing a Function
  492    297  -1 Sort stability
  524    249  -3 Select
  529    244  -1 Send an email
  562    199  -1 Topological (dependency) sort
  666    118  +3 Simple Random Distribution Checker
  678    103  +0 First-class Numbers
  680    101  +0 Seven-dice from Five-dice
  685     87  +1 List Flattening
 99999      0  -4 Russian Peasant Multiplication

--Paddy3118 04:28, 25 August 2009 (UTC)


Ethiopian Multiplication jumps to be the most popular page behind the Main Page, and I can find no evidence of a 'buzz' around it. No blog entries, no group discussions. I would have expected something more? --Paddy3118 06:55, 1 September 2009 (UTC)

It's all coming through StumbleUpon. I'd like to write a blog post on exactly what I think happened, but it's going to take a while, and I need to look into it more. A simplified explanation would be that a SU user discovered the page, liked it or reviewed it, leading to both his subscribers (and their subscribers) to see it, as well as increasing the page's general ranking in SU's page selection algorithm. This would be made easier to show if I could identify a trend around the phrase "ethiopian multiplication" in blogs and searches over the last month. The functionality is there in Google's advanced search, but it requires time and opportunity. --Short Circuit 14:33, 1 September 2009 (UTC)

Ethiopian Multiplication: Missing function names[edit]

What's the problem with the SNOBOL4? It works (I just tested it!). Is it because the half/double/even functions aren't there? I didn't write it, mind. I could tweak it to suit, but then it makes it less terse, less efficient, less SNOBOL4. --Axtens 04:32, 25 February 2010 (UTC) And can you point out where the half/double and even are in the SNUSP version? --Axtens 04:39, 25 February 2010 (UTC)

The halve add and double functions in the SNUSP example are actually where it says "halve", "add", and "double". Other languages have had to conform to the separate function requirement, so I don't think we should allow a special case for SNOBOL4. --Mwn3d 04:47, 25 February 2010 (UTC)
I purposefully turn a blind eye to the SNUSP] versions' idiosyncrasies, but that is because I treat it and Brainf*ck as like the Monster Raving Loony party in British elections - it is there, it can be a good laugh, but taking them seriously would lead to a happy dementia :-)
The problem with the SNOBOL4 is that it doesn't use the function names for functionality as expressed in the task description and followed by the other 'language' examples. --Paddy3118 05:10, 25 February 2010 (UTC)
Okay, then, I'll have a go at the SNOBOL4, unless the original author gets there first. As for SNUSP ... hmmm, show's how good I am with esolangs :\ . --Axtens 06:11, 25 February 2010 (UTC)
On a slightly related there a particular reason to insist on "function" when "routine" couple be appropriate? Take assembler languages, for example. The type of code structure offered by functions is available in any language with goto, but without explicit language support for arguments and return values. --Michael Mol 14:22, 25 February 2010 (UTC)
Hi Michael, The task refers to "functions/methods/procedures/subroutines" I guess I could have followed it by three dots: ..., but I thought most languages would be able to work out what was needed, and the problem seems to be with their omission when the language does have those facilities. I think if I point out the omission, Someone could say that their is no such construct in their language that is normally used, but I don't think it will come to that, except maybe with calculator languages that might not have named subroutines? --Paddy3118 17:46, 25 February 2010 (UTC)
I think the inclusion of incorrect code is better than no code at all, so long as there is an explicit understanding of why the code is marked incorrect, and suggestions are made for how it can be corrected. With simple removal, the unobservant and rushed (and I must count myself among these) might just see a lack or unexplained removal of code, and make the same mistake that the original contributor did. Worse, the original contributor might see the code has been removed, without understanding why. See the mess around the editing of the Proof task, for an extreme example. (I saw the creator of that task say he wished he'd never created the task in the first place, because nobody "got" the task enough to give a correct response. I'd rather avoid that degree of despondency and cynicism happening to frequent contributors.)
What it boils down to is that my reasoning isn't technical or linguistic, but rather done from the perspective of how contributors will interact with the resulting circumstances in the future. Well, that, and trying to maintain the utility of the spirit of the task without getting too focused on particular language features. Does that make sense? --Michael Mol 19:10, 25 February 2010 (UTC)
How about flagging code as incorrect and deleting it after say a month of inactivity? You give a reasonable time for corrections to be made, but eventually don't litter the page with abandoned, buggy code. --Paddy3118 21:01, 25 February 2010 (UTC)
I like the idea, but wouldn't know how to effectively automate the cleanup (or, at least, a maintain a listing of pages that require urgent cleanup). If it could be done right, though, it could be incorporated into the Unimpl page template such that "needs attention within a week" and "needs attention within two weeks" could be placed higher in the page than the general Unimpl, ENA and Omit sections. (I suppose a lot of the pain could be dealt with by having epoch deadlines, such as End-of-[Jan-Dec], and setting the deadline for each required correction to end-of-next-month. That way, we would only need twelve categories for tracking deadlines, rather than finding and parsing arbitrary timestamps.) If code goes uncorrected, it could be marked as Omitted (with an explanation given in the omit usage), or removed entirely, with a placeholder HTML comment for the next person to come along. --Michael Mol 22:03, 25 February 2010 (UTC)

Note from a HS math instructor[edit]

I forwarded you an email I got from a math instructor who was pleased to see a task that fit into his CS-into-HS-math curriculum ideas. At least, I think I forwarded it to you; I don't remember how that email address wound up in my contacts list, but it looked correct from my recollection. :) --Michael Mol 17:52, 17 April 2010 (UTC)

Michael, Thanks for forwarding it - it's great to get positive feedback from a lecturer. (Maybe the site needs a "visitors book")? --Paddy3118 01:18, 18 April 2010 (UTC)

Evolutionary algorithm[edit]

I've had the dreaded Flu the past week, and am still getting over it. To test my faculties I took a look at what tasks were requested and took on Weasel algorithm.

I wasn't quite happy with the results, and wrote that up in a blog entry. One of the commenters there, (thanks Steve), used the phrase 'evolutionary algorithm', which turned out to fit a WP page, that re-introduced me to all the proper nomenclature. I decided that a re-write using the proper terms, would then make a better RC task.

I tried to word the RC task so that people could experiment and slot in different algorithms for things like the fitness and mutation functions and I'm pleased to see that already the C language solution has done just that. (I do like the way the C is coded too; very nice).

After the coding, what gets me is the amount of controversy that was caused by such programs, especially the original quoted in a book by Richard Dawkins (that I have not read). It seems so little to be controversial about, but then I guess RD's delivery might inflame some.

--Paddy3118 04:28, 7 October 2009 (UTC)

Great little task you added here. rldrenth 7-oct-2009

Sorting Using a Custom Comparator - C# incorrect[edit]

By that measure, the ADA solution would also be incorrect? Sorting Using a Custom Comparator#Custom_Comparator.adb

Thanks, I've tried to point that out now. --Paddy3118 06:45, 20 November 2009 (UTC)

Series out of control[edit]

In reply to [1]: see [2] (ugh, what a horrific URL!). I'm not gonna change it back, because that would feel too much like edit-warring to me (and heaven forbid I should edit-war over grammar), but I think most professional editors would prefer my version. —Underscore (Talk) 20:53, 16 December 2009 (UTC)

I thought I was taught that A, B, C, and D; was to be preferred over A and B and C and D. My partner concurs? P.S. I do try to be cautious over edits, but I thought i was on solid ground. Is this possibly an English vs American English thing? --Paddy3118 21:08, 16 December 2009 (UTC)
You're quite right that "A, B, C, and D" is in general better than "A and B and C and D", but that's not the issue here. Look closer at the explication I linked to and at your own sentence. Here's the latter with the irrelevant parts removed:
This regexp is multi-line, verbose and uses named groups.
Clearly, this is equivalent to:
This regexp is multi-line. This regexp is verbose. This regexp is uses named groups.
So you see, without noticing it, you're making "and" perform two functions at once:
  1. separating two complements of "is" ("multi-line" and "verbose"), and
  2. separating two predicates of "This regexp" ("is multi-line and verbose" and "uses named groups").
This is a no-no because it leads to nonsensical implications such as the "is uses" above. (P.S. I'm American; dunno about you.) —Underscore (Talk) 23:56, 16 December 2009 (UTC)

Thanks Underscore for pointing out my error. Mea culpa. I did try your reference before, but the google book search did not show the details for some reason. I have now done my own search with your term "series out of control" and got that full explanation. I will of course change the edit. --Paddy3118 03:28, 17 December 2009 (UTC)

Edited! --Paddy3118 03:32, 17 December 2009 (UTC)
Any time. :) —Underscore (Talk) 23:43, 17 December 2009 (UTC)

Hi Paddy, I'm Wolf[edit]

Sorry to approach you like this, if I would know your preferred way of communication, I would use it. You may remember me from 19.May 2010, you send me (within minutes of my posting of inferior code) a note pointing out the problem.

I might be totally off track here, but who do you recommend to involve in a discussion about a faulty code? An AHK forum user has discovered a "misleading" pseudo-code regarding CombSort Algorithm, and I want to help fix that. My first steps were starting a discussion on Comb_sort, then posting to Village_Pump. In over a week, there was no answer, no hints for me what to do, so I decided to ask someone who keeps an eye on quality (such as yourself).

Could you please check out my example of numbers-to-be-sorted with the Python code that is posted, and kick me hard if I deserve it. I am a fairly new member here, and try to cause as little upset as possible. But there should be a procedure (informal or otherwise) to ensure a certain level of quality.

BTW, the pseudo-code is (maybe) copied from wikipedia, where it is also wrong (if I am right).

--Wolf 21:00, 26 May 2010 (UTC)

Hi Wolf, my own, sorry, excuse was that I do have some areas of algorithms that don't excite me to contribute and sorting algorithms is on the edge of that as only a few (of the many, many) sorting routines have interested me of late; and mainly because of their close links to other things that I am more interested in. I took a look and gave a tech. reply on the Talk:Sorting algorithms/Comb sort page. --Paddy3118 05:35, 27 May 2010 (UTC)

Averages/Root mean square[edit]

Regarding the edit here: What exactly does that paragraph add to the page? Isn't the final size of the executable rather irrelevant? And if it only works with a specific compiler version, there is always {{works with}}. Or am I missing something here? —Johannes Rössel 18:18, 23 June 2010 (UTC)

Sorry Johannes, I just did a minor edit of removing a single space. It's not my text. --Paddy3118 19:55, 23 June 2010 (UTC)
Argh, sorry. I'm reading too many diffs a day and MediaWiki automatically marking compete paragraphs red if only a single byte changed is a bit confusing. Apologies. —Johannes Rössel 22:57, 23 June 2010 (UTC)

The XML link[edit]

The XML link at the top of XML/Output comes from it (technically) being a subpage of XML. I looked for a bit on the MediaWiki help sites but couldn't find a way to remove it for a single page. They can be turned off for the whole site, but sometimes they're useful. --Mwn3d 01:27, 7 August 2010 (UTC)

Thanks. I'll ignore it then. --Paddy3118 01:28, 7 August 2010 (UTC)

More privs.[edit]

Use them sparingly and wisely. :) --Michael Mol 20:33, 7 August 2010 (UTC)

You must have noted my anger :-)
Thanks, I'l use them as advised. --Paddy3118 20:48, 7 August 2010 (UTC)


Have you heard of this craziness? It says Python uses it. I can't find a non-long-winded explanation of the algorithm though. --Mwn3d 21:12, 8 August 2010 (UTC)

This seems easy enough to follow. I read through it a few weeks ago. This reads easier, though. --Michael Mol 22:16, 8 August 2010 (UTC)
Hi. Yep, I remember the buzz when Tim Peters introduced it. I don't have the time to google in comp.lang.python to find the first threads after its release, but rest assured, it was heavily tested when it was released, as well as when it was adopted as the sort routine for Jython (which I could find). I have heard that it will be added as the Java sort routine too. I never did go fully into the algorithm though as sort routines give me only a little algorithm "buzz".
Another link --Paddy3118 08:26, 9 August 2010 (UTC)
I saw a link that said it was added to openjdk, but obviously that code has so much extra stuff going on to keep track of other stuff in the JRE that the algorithm kind of gets lost. Did you see something saying it would be added to the Sun JRE? --Mwn3d 12:52, 9 August 2010 (UTC)
That must have been what I saw too as I would not have known the difference. I did find this though which makes me think that it has not been ratified as yet (but neither does it seem to have been rejected). --Paddy3118 13:08, 9 August 2010 (UTC)

I have tracked down a version of timsort written in subset of Python called RPython and used for the PyPy project. I am not sure of the license but you can view it for reference by downloading from here and extracting file pypy-1.3/pypy/rlib/ out of file pypy-1.3-src.tar.bz2.

It doesn't seem like a simple sort algorithm and, no doubt, will be sensitive to small changes. --Paddy3118 11:16, 10 August 2010 (UTC)

You might contrast the Python with this Java implementation. --Paddy3118 11:20, 10 August 2010 (UTC)

The original thread (Pointing to an informative msg not at the head of the thread. --Paddy3118 13:27, 10 August 2010 (UTC)

Symmetric Difference for MATLAB[edit]

I don't understand the error you found with the MATLAB solution to the problem. It gives the proper output given an arbitrary input for sets containing arbitrary members of arbitrary types. Also, is the problem with the first example or the second?Cferri 22:40, 10 August 2010 (UTC)

Hi Cferri, its your second example and how it would work with the info in the note:
Note: If your code uses lists of items to represent sets then ensure duplicate items in lists are correctly handled. For example two lists representing sets of a = ["John", "Serena", "Bob", "Mary", "Serena"] and b = ["Jim", "Mary", "John", "Jim", "Bob"] should produce the result of just two strings: ["Serena", "Jim"], in any order.
I haven't run your ccode but you need to make sure it would give the right answer if their were these type of duplications if you are indeed implementing the behaviour on top of lists/tuples rather than a set type. --Paddy3118 02:56, 11 August 2010 (UTC)
Oh, Ok. I'll check that. Cferri 04:27, 11 August 2010 (UTC)

Filling out Rosetta Code:Add a Task[edit]

Could I get you, Rdm and Rdm to give Rosetta Code:Add a Task a thorough treatment of examination, debate and filling? Of the cross section of current users, I think you three are probably the most likely to be familiar with the general pattern and concerns of creating tasks. I added a bunch of my own thoughts in HTML comments in-line, and left a note in the talk page. --Michael Mol 17:15, 21 September 2010 (UTC)

Variations on a theme[edit]

I noticed you removed the pipe-based PowerShell solution to Ethiopian multiplication. Is that really necessary? Near as I could see, the relevant example had the necessary code, and only lacked functions demarcating the separate processes. Marking the task with Template:Incorrect might have been more appropriate, in that case. --Michael Mol 18:18, 1 November 2010 (UTC)

Umm, you're right. I was too harsh. I can do that now. I see that changes have already been made. --Paddy3118 19:44, 1 November 2010 (UTC)
Thanks for helping RC keep a positive tone. :) --Michael Mol 20:59, 1 November 2010 (UTC)
(Concerning another Rosetta Code task, but in the same vein.) --- Thanks for your input and advice (Egyptian Fractions) talk page, and also at other times and places.   It may be not for you to understand why, but it came just at the right time, the whys and whyfors aren't germain in a public forum such as here.   Your tone (and demeanor) were much appreciated at that time and helped me along with improving the task verbage and task clarification(s); I was beginning to feel like a brown shoe at a tuxedo party.   I wish there was a good way to review a new task, other than to make it a draft task, say, to be able to have it be amongst some kind of peer panel to iron out the wording and whatnot.   Even after (many?) years of entering task solutions/examples, I never expected such wrath, ire, and name-calling here on Rosetta Code ... and so it goes; perhaps I'm getting too thin-skinned as my temperament ages and I don't suffer fools gladly.   Anywhoooooose, I appreciate your concerns and suggestions with regarding to the new (draft) tasks that I've been entering.   It's fast becoming more and more of a chore, and my longish list of new topics may not see the light of day, so I may have to whittle it down to the simpler topics and quit while I'm ahead and while it's still fun working on Rosetta Code tasks (either unsolved or entering new one).   -- Gerard Schildberger (talk) 00:28, 5 April 2014 (UTC)
Thanks for the kind words Gerard, but I am only one of the many, yourself included, that help set the tone of RC. I like to think that in some ways I am sitting in front of a flat plane of glasswith coloured patterns on it, having a "conversation" with something that gives very little feedback - no unconscious threat, or hint of mood. I guess a lot of conversation skills are based on feedback from natural situations and putting some people in front of a keyboard is likely to loose empathy. There is not much to do but cull the most flagrant abuses - of which there are very few - we set the line (I think), at wanting to maintain a site that would pass if vetted by some "liberal" school board.
Much respect to all fellow task writers. It is the harder path! I do "gird my loins" after posting that first draft because some criticisms hurt and too many people have a dismissive and/or abrupt writing style - especially when they are right! And when they think they are right!
I know that being polite is harder so at times thinking "but I'm more polite" than whoever gives me a smirk and keeps me going. (Plus the fact that task writing is a difficult skill that I use at work - together with the criticism lmitigation strategies).


Thanks for fixing up (removing) the CPU timing stuff from the (Classic) REXX example in the Rosetta Code task Sieve of Eratosthenes;   It was getting to be a bit of a sticky wicket, and I sure didn't want to remove the inappropriate timings and open up another can of worms, especially since it was Classic REXX programs that were being executed/timed under the ooRexx interpreter, and it probably should've been posted under the ooRexx language (as that's what it was apparently translated for and executed under).   Anyway, thanks again. -- Gerard Schildberger (talk) 01:44, 25 July 2014 (UTC)

Well RC isn't set up to do performance comparisons, so we might (on rare occasions), stoop to generalization about orders of magnitude differences in execution time, but those were not really helpful. --Paddy3118 (talk) 08:33, 25 July 2014 (UTC)

Ordered words[edit]

Please see Talk:Ordered words#Output. —Kevin Reid 18:37, 1 February 2011 (UTC)

N-Queens Edit[edit]

You edited down my (clearly overboard) output for the N-Queens problem. I'm not sure where the cutoff is but several hundred lines was obviously way too much. Sorry. I was very slightly annoyed that you completely eliminated my N=8 output, since that is the prototypical case, an 8x8 chessboard. OTOH I could have avoided the problem in the first place by showing some restraint, so I'm more annoyed at me.

In any case, I added additional code to winnow the solution sets and also to cut down the output on the largest case. The result is some what larger than your edit but still under 50 lines total, much shorter than the programs themselves. I also re-added the scrollbar to avoid taking up too much vertical real estate. Is this reasonable? --Balrog 19:57, 20 March 2011 (UTC)

Hi Balrog, sorry about not getting the edits right, I should have taken a bit more time. Instead I decided to show some of the smaller cases and the summary of the last. I had a look at your current edits and they seem fine to me. I hope this won't stop you editing - I'm still learning too! --Paddy3118 22:00, 20 March 2011 (UTC)
In general (for me at least) moving an example to a new page or adding output isn't a matter of the number of lines (we have the scrollbars to deal with that), it's about a number of bytes. We don't have super-servers here and anything we can do to lighten the load on them is good. There shouldn't be any problem with storing lots of data, but there might be problems with retrieving and sending lots of data at once. When one example starts to get into the 10KB range I usually consider shortening it or breaking it out into a new page. Like most things here, though, it's a little touchy-feely. --Mwn3d 22:18, 20 March 2011 (UTC)
Servers are fine, as is my available bandwidth. I'd be more concerned about page load times for slow and/or congested end-user connections. Similar concerns apply, of course. --Michael Mol 12:23, 21 March 2011 (UTC)

Y Combinator[edit]

Sorry if I write in a wrong place. I'm Trap D. I notice that you removed my contribution to the task Y combinator. I send a mail to U. Neumerkel to know his opinion about the reasons you gave me. If you look at my code and the code written on this page it's not exactly the same. I deduce what I think is the Y combinator of the code written on "page 106".User:Trap D 20:31 11 April 2011

I read your answer, Ok. I'm waiting for the reply of U. Neumerkel before posting my contribution again. User:Trap D 23:15 11 April 2011

My mail :


First I apologize for my bad English.

I'm fond of Prolog and I recently found this page : where you explain how to improve high order programming in Prolog with your implementation of lambda.

I was very interested by that :

lists_mod(Member, List) :-

   Me =     \X^L^R^ ( L = [X|_]
                    ; L = [_|Xs], call(R, X, Xs, R)
   Member = Me +\Xr1^Lr1^ call(Me, Xr1, Lr1, Me),
   Li     = \Lr1^P^Rr1^ ( Lr1 = []
                        ; Lr1 = [X|Xs], call(P,X), call(Rr1,Xs,P,Rr1)
   List   = Li +\Lr2^Pr1^call(Li,Lr2,Pr1,Li).

main_list(Xss) :-


main_list2(Xss) :-


I extract this code that I think it could be a Prolog Y combinator.

- use_module(lambda).

y_combinator(P, Arg, R) :-

   Pred = P +\In^Out^call(P,In,Out,P),
   call(Pred, Arg, R).

test_y_combinator :-

   Fib   = \NFib^RFib^RFibr1^(NFib < 2 ->
                    RFib = NFib
                    NFib1 is NFib - 1,
                    NFib2 is NFib - 2,
                    RFib is RFib1 + RFib2
   y_combinator(Fib, 10, FR),
   format('Fib(~w) = ~w~n', [10, FR]),
   Fact =  \NFact^RFact^RFactr1^(NFact = 1 ->
                       RFact = NFact
                       NFact1 is NFact - 1,
                       RFact is NFact * RFact1
   y-combinator(Fact, 10, FF),
   format('Fact(~w) = ~w~n', [10, FF]).

with output :

?- test_y_combinator.

Fib(10) = 55 Fact(10) = 3628800 true.

Do you agree with my interpretation ?

I publish this code on this site : It is a site about tasks to solve using languages. I solve few tasks with Prolog and I thought that I could publish this code to solve the task about the Y combinator. Of course, I gave your name for the module lambda and the link to the page above. I thought I could do that because there was a link to the code of the module lambda. This site RosettaCode decides to remove my contribution arguing that the site where is the page ( is not "non-profit", and I have not your permisssion.

Are they right ? Do you mind if I publish this code ?

Thanks anyway for your answer.

Best regards.

Joel Foutelet.

Here is the answer of Ulrich Neumerkel :

I essentially agree with you.

However, please note that I *only* transcribed the code which was originally written by Hermenengildo et al. Please refer to Reference 6.

Cordialement, Ulrich

So, I'll published my contribution with the notes of U. Neumerkel User:Trap D 14:10 12 April 2011

Ela (Y combinator)[edit]

I am not sure why you added this comment to Ela sample: "This example is incorrect. fac and fib seem to be directly recursive functions without the use (or definition), of the Y combinator. Please fix the code and remove this message."

fac and fib are clearly not directly recursive functions and use fix-point combinator which code is provided at the end of the sample. --Disregard, I misread the task.


If you really intend to mark all (hundreds of) entries that don't give output, you might consider creating a new template for that purpose. {{Incomplete}} is ill-suited.

CRGreathouse 23:24, 7 May 2011 (UTC)

Thanks CRGreathouse,
I have created a new "output?" template that looks like the following, (missing the first parameter which would be the language name):
This example does not show the output mentioned in the task description on this page (or a page linked to from here). <Optional explanatory text>. Please ensure that it meets all task requirements and remove this message.
Note that phrases in task descriptions such as "print and display" and "print and show" for example, indicate that (reasonable length) output be a part of a language's solution.

This is my first template so I read a little, then shamelessly copied from template incomplete! --Paddy3118 11:13, 8 May 2011 (UTC)
It looks good. It has already ameliorated some of my (unfortunately misdirected) anger. :)
CRGreathouse 06:20, 9 May 2011 (UTC)

In the future, it will save a lot of eyerolling if people could run some examples on codepad if they do print the output but the author just didn't add it to the example. It doesn't support every language, but it could help a little bit. --Mwn3d 20:41, 22 June 2011 (UTC)

Why Permutations/Derangements?[edit]

I wanted some info on permutations and went first to Mathworld rather than wikipedia, where the word 'deranged' stuck out and just had to be followed up!

The wp articles generalizations section mentioned anagrams which then lead to me creating Anagrams/Deranged anagrams. --Paddy3118 21:00, 14 May 2011 (UTC)

It is an awesome name for a task subject. When I saw it in the RSS feed, it caught my attention and I shared it with a couple people in the room. :) --Michael Mol 11:47, 15 May 2011 (UTC)
Who says mathematicians don't have a sense of humour :-)
--Paddy3118 11:54, 15 May 2011 (UTC)

Quaternion type[edit]


The task said "If your language has built-in support for quaternions then use it.". And I see nowhere in the task that it is required to use the form (a,b,c,d). However, the implementation in gap is incomplete : I didn't write -q, q1+q2, etc. which are trivial. But I will, I swear :o)

Toucan 08:20, 13 June 2011 (UTC)


For case 3 the function is built-in. Do you mean I have to rewrite it ? Well, why not... Toucan 09:09, 13 June 2011 (UTC)

Hi Toucan, a note explaining that it is built-in then use your built-in function would suffice. (It's amazing what languages can have in their libraries). --Paddy3118 13:21, 13 June 2011 (UTC)
I made {{eff note}} for just this occasion. --Mwn3d 13:43, 13 June 2011 (UTC)
GAP is very very good at algebra and combinatorics, so it's not too surprising to find it here. It has a huge library for almost everything about discrete mathematics. On the other hand, floating-point support is almost absent, as well as networking, and many things one would like to see in a general purpose language (which it is not, of course). See for explanations on what it really is. I *love* it for quick programs for recreational mathematics ;-)

Python discousion with now Tonyjv[edit]

You had approached me about Python code. Now I am registered. --Tonyjv 22:41, 13 June 2011 (UTC)

It's going back someways, but I think you replaced Pythons REPL input with the same code but as if it were in a file. Thereby losing the notion that the example was easy enough to develop/display output in the Python shell. In a comparison of languages, Pythons shell can be a good plus point. --Paddy3118 23:18, 13 June 2011 (UTC)

It is true, that shell is nice, but you also be carefull with difference of behaviour the IDE environment brings. You should never forget to prepare ready program to file and run it properly from OS prompt/File manager.

My expertise which brought me here for visit is anagram generation, which I used as training project for learning Python. It still makes me wonder that trying the Go language by coding my anagram program (based on fast enough philosphy), the psyco version was completely unbeatable and pypy is also terrible in file IO. Anagram result from those programs: Go

>timeit anagrams.exe "tonyveijalainen"
Name tonyveijalainen
352 candidate words found.

Version Number:   Windows NT 5.1 (Build 2600)
Exit Time:        6:29 pm, Friday, June 17 2011
Elapsed Time:     0:00:03.234
Process Time:     0:00:03.093
System Calls:     26551
Context Switches: 6836
Page Faults:      1785
Bytes Read:       1131190
Bytes Written:    173240
Bytes Other:      134532

pe 17.06.2011 18:29:01,76 C:\Go\programs

Python2.6 psyco:

>timeit c:\python26\python.exe "tonyveijalainen" >nul:

Version Number:   Windows NT 5.1 (Build 2600)
Exit Time:        6:31 pm, Friday, June 17 2011
Elapsed Time:     0:00:00.718
Process Time:     0:00:00.718
System Calls:     8946
Context Switches: 2060
Page Faults:      3696
Bytes Read:       1494996
Bytes Written:    40407
Bytes Other:      40078

pe 17.06.2011 18:31:56,20 C:\Go\programs
Hi Tonyjv, I regularly write, use, then toss away small programs written at Pythons command line shell. Especially when I am exploring other stuff and the Python is there as the support. When I need to be innovative elsewhere and keep that other train of thought. Most of the time, I make the correct call and can recall code used if I want to re-use it. Its just one point on the surface of ways of using Python - from calculator to tested, packaged, logged, configuration-managed large application. --Paddy3118 06:02, 19 June 2011 (UTC)
I agree with you on not underestimating Python speed. I have replaced a C++ application by what turned out to be a faster version in pure Python - Pythons in-built datastructures are very fast and compiled languages can't make up for bad algorithm choices. --Paddy3118 06:02, 19 June 2011 (UTC)

Minor edits[edit]

Ok, I didn't think of that ;-) Toucan 19:28, 1 July 2011 (UTC)


RC sets out to be a comparison site for whatever tools users apply the effort of comparing. One of the earliest pages I created tried to document typical invocation of a C compiler. I can't find it, now, though. --Michael Mol 11:45, 6 September 2011 (UTC)

Hi Michael, does this apply to my comment on preferably not adding detailed timings to solo program runs? If so, then maybe we need a Rosetta Code:Village Pump/Run times on examples? page to evolve some consensus? I, as you probably know, am a bit wary as you need to specify a huge amount of probably obscure information to get repeatable timings from different people and would prefer a maximum of:
  • Not mentioning stand-alone program timings that are less than two minutes and making other comments vague such as approx 5, 10 20 minutes or aprox 0.5/1/2/5 hours
  • When there are two or more solutions in the one language then mentioning just a rounded comparison i.e. X is approx. 1/2/5/10/100/1000/... times as fast as Y.
  • Discouraging timing comparisons between different languages.
  • Allowing detailed timings, if someone wants to; in the talk pages.
We don't have the infrastructure of The Computer Language Benchmarks Game, which is one of the best sites for comparing language run times, and even they tell users don't jump to conclusions.
Yeah, I jumped the gun by responding without seeing the context of your original discussion (I misunderstood it to refer to, e.g. different compilers' run-time support libraries). I agree 100%. --Michael Mol 12:45, 6 September 2011 (UTC)

Hi, thanks for the feedback! Yeah it entirely makes sense what you wrote on my talk page. Was that in reference to Hamming_numbers#Alternative_version? I only edited that section to add remarks about memory usage, and left the timing remark in, that was already there before me - it compared I thought with the subsection above it for the same language, that talks about "couple of seconds". Or was it something else? Could you give me a pointer please so I could fix it. Thanks.

OTOH I like using for testing; I think its timings could reasonably be mentioned as it's a uniform platform. Wouldn't it be neat if all code snippets added to RC had a requirement of actually running on Ideone, and be run there automatically by the system and show its produced output and times on RC pages, automatically? Say, requiring of a posting user to provide a runnable link into Ideone entry and show its text on RC, instead of plain textual posting that it is now? The code that won't run wouldn't get accepted, for one. All kinds of comparative reports could be then automatically produced via its API (it has one), etc. Just a vague thought. :) WillNess 01:05, 7 September 2011 (UTC)

RC supports several hundred lanaguages. We've got links to codepad (for a few languages), and I've got an invite from CodeEval (for a few languages) to try having them execute code by proxy. Given enough time, I can automate just about anything serverside. However, I would be shocked and awed if there were an online site like CodeEval, IdeaOne or CodePad which could handle all the languages RC has, and would add more as they show up on RC. That said, comparative performance measurement is hard and rightly criticized for technique, and I really don't expect to see it automated any time in the near future. --Michael Mol 01:30, 7 September 2011 (UTC)
Comparative performance measurement is not my primary motivation here. Mainly it would make sure the code posted on RC conforms to the task spec, and output is shown (if specified in task description). But showing times automatically is also nice, and also knowing they are all tested on same platform so the OS/PC specs/ etc. differences are taken out of the picture. The languages that aren't supported would be postable as they are today, as text source not executable source. The execution platform for every executable code snippet would be clearly identified, so if one runs on Codepad and another on Ideone, that would be clearly seen by anybody.
When testing different solutions in the same language it would indeed let us compare algorithms performance. For an example take a look at this, at the bottom. I've ran all the tests for all the code snippets in there manually at that entry, and manually gradually inserted the timings back into the source comments; to have this kind of thing done automatically would be awsome and ensure all timings are true and current. There is a tool in Haskell that would run (client-side) tests and take statistical measurements automatically, but I can't remember how it's called right now. :) WillNess 10:03, 7 September 2011 (UTC)
Hi WillNess, apart from the need to support a vast array of languages, I think comparative timings would skew the examples to produce faster code as a kind of unwritten extra task requirement. Fast code is often un-idiomatic for a language and we hardly ever state what is fast enough in tasks which is very important when timing code. Being the fastest is pretty meaningless in itself - The fastest may not be fast enough; the fastest could be too fast, if the system expects to wait a certain time for a component to finish; the fastest might be too hard to maintain; the fastest might take to long to develop... --Paddy3118 11:46, 7 September 2011 (UTC)
If you'd like to compare algorithmic efficiency, there are probably better ways to do it that clock time. For example, have key, regularly repeated aspects performed by a function which pokes an accumulator, and count how many times the function was called. That puts focus on the algorithm, and not on shortcuts and optimizations that detract from code clarity. --Michael Mol 13:42, 7 September 2011 (UTC)
As for showing output, as I noted, CodeEval has offered to provide an execution environment for at least some of the code snippets. I will eventually get that working in an automated fashion, and I hope to define and implement some kind of API to allow any language community to offer an execution environment for RC's use. --Michael Mol 13:42, 7 September 2011 (UTC)
I hope to define and implement some kind of API to allow any language community to offer an execution environment for RC's use
Oooh! I like the sound of the API route. You can get timings if you want; but they don't have to appear by default. Mind you, People love to optimise for runtime for some reason, so it will always be hard to control - Maybe a warning about the normal optimisation being for idiomatic code whenever you select to generate run times...? --Paddy3118 15:36, 7 September 2011 (UTC)
"You can get timings if you want; but they don't have to appear by default. " Cool. This could be done also with kind of collapsable sections. Users would click on "Show" to actually show what is there. The contents could be cached so each user's click wouldn't cause the actual run each time, but only say once a month or after a change was made. WillNess 12:40, 9 September 2011 (UTC)
(I don't have a pony in this race, but already has an API, or so they say.) Yes, there is a danger of the race for speed, but I think naturally we'd just end up with several versions for same task/language combo. The more the merrier. :) Kinda like Hamming_numbers#Haskell which now has three versions - nicest, simplest and fastest. I prefer to know more, not less, to have more information, not less information. If it's misleading, then we'd need to expound some more on that in each specific case. And if someone views this as a competition between languages, it's their choice. But if not to compete, then at least to compare, right? It may not be as clearcut as comparing timings, but timings are still a part of comparison. If some task is 10 times slower on language X, I want to know about it, and if it's 100 times shorter and faster to develop I want to know about that too. WillNess 17:21, 7 September 2011 (UTC)

Overwrote my responses.[edit]

You overwrote my responses on User talk: Please fix, so we don't have an edit conflict again? --Michael Mol 19:27, 20 September 2011 (UTC)

Yea, I just posted the fix and got your message. Sorry. Should be OK now. --Paddy3118 19:30, 20 September 2011 (UTC)


I see that you're a 'crat; would you delete this file?

I inadvertently uploaded it with a typo. The correct version is at File:Langton-pari.png.

CRGreathouse 02:04, 28 November 2011 (UTC)

It's gone :-)
--Paddy3118 05:00, 28 November 2011 (UTC)
Thanks! CRGreathouse 18:55, 28 November 2011 (UTC)


"If you're ever looking for a template, try Category:Example attention templates and Category:RCTemplates first."

- Thanks -Mwn3d

There's this nifty page too. --Mwn3d 20:06, 5 December 2011 (UTC)


Just wanted to say thanks for being hot on dealing with spam. At this point, I have to think RC is a specific target by spammers. I'll find time to deal with it, it's just slow going right now. --Michael Mol 20:17, 23 May 2012 (UTC)

You're welcome. They're not! --Paddy3118 21:41, 23 May 2012 (UTC)
Adding THANKS (for all you do tirelessly here on RC) --Walterpachl 16:51, 14 July 2012 (UTC)
Aw shucks. You got me blushing. Which is pretty hard to see on a black guy :-) --Paddy3118 20:50, 14 July 2012 (UTC)
Agreed on the benefits of your efforts. If I had one small nit to pick, I would prefer that you find a more gender-neutral four-letter word to use on the spammers in the log. :-) --TimToady 18:50, 6 November 2012 (UTC)
(British English meaning of cretins or imbeciles. :-)
--Paddy3118 21:30, 6 November 2012 (UTC)

It looks like Bengeorge and Justgerrardz are two spamming accounts which should be blocked (both are posting spam links on Category:Gambas) --Andreas Perstinger (talk) 17:27, 4 June 2015 (UTC)

Rdm zapped them both. Thanks guys. --Paddy3118 (talk) 06:16, 5 June 2015 (UTC)

Empty Program[edit]

Thanks for fixing --Walterpachl 18:53, 30 June 2012 (UTC)

Your welcome :-)
--Paddy3118 21:56, 30 June 2012 (UTC)

Sudoku Code for RPN / HP-15C[edit]

I updated the entry to have the code on your site.

I realize that programming languages that are intended for a single calculator are not really general purpose and might not belong on this site. On the other handm variations of RPN have been pretty widely used and this is an example an algorithm that most people would not consider RPN suitable for, and in that respect it is interesting. Your call.

Hi Marcel. Thanks for adding the code :-)
P.s. It's not my site - I just contribute. Like yourself. --Paddy3118 19:39, 30 January 2013 (UTC)

explanation re: include files[edit]

-- Moved to one place.

Links in your user page[edit]

Hi. It does not matter much, but you use external links in your user page, where internal links would do. Example: Monty Hall problem instead of Monty Hall problem.--Grondilu (talk) 09:30, 4 May 2013 (UTC)

Hi Grondilu, The user page gets read ;-)
A combination of sloppiness, forgetfulness, and design. I used the prog that generated the table originally to produce a table for a web page that was not on RC so used full paths and did not change things when generating the wikitable. --Paddy3118 (talk) 11:12, 4 May 2013 (UTC)

Re: OOCalc[edit]

I am a newbie to Excel. Found out how mundane and repetitive tasks can be done in no time when I was playing around with it. My true love is C, but I am open to all languages since I believe there is much to learn from each and everyone.

Great! --Paddy3118 (talk) 16:18, 9 August 2013 (UTC)

Re: Xmerl a language?[edit]

Hi Paddy3118,

xmerl is a Erlang Library. I used the libheader to indicate that the code was using the library, and then, as it creates a internal link, I followed it and I edited the page shown (a new one). I was suspicious that it wasn't the correct way to do it. Should I leave the library page empty?

Thanks! :)


Now that encryption is in every news would it be reasonable to ask for encrypting algorithms? Of course I have one in REXX which I think is quite good but I'd love to know what others think about it Regards Walter And thanks once more for your careful moderation!!! ( 20:32, 6 September 2013‎ Walterpachl )

First, the thanks are welcome! I'll accept on behalf of all the moderators :-)
Unfortunately encryption is out of my field (so far), but I, like you, think it would be good to have a disturbingly easily cracked by the NSA algorithm on RC ;-)
--Paddy3118 (talk) 22:46, 6 September 2013 (UTC)

Who created a solution?[edit]

Paddy, I can't find who created the ooRexx Entry in can you? You're always opposed to putting the authors their name into theit slotion. Why? --Walterpachl (talk) 16:22, 14 October 2013 (UTC)

Hi Walterpachl, about not putting names in the source: That is because it is generally a good thing for people to improve examples if they can and often improvements are from people other than the initial author. The page history is a better way of finding out who did what. A name on the source would convey ownership when improving is encouraged. It is analogous to author names not appearing on Wikipedia pages - just the discussion pages.
On the OORex thing: I had to do a binary search by hand to find this. Have fun :-)
--Paddy3118 (talk) 17:23, 14 October 2013 (UTC)
Thanks Paddy, I was looking for ooRexx -- should have looked for Rick (whom I happen to know) --Walterpachl (talk) 22:52, 14 October 2013 (UTC)

Please use a unicode capable browser when make changes[edit]

C.f. this edit. I'm assuming you didn't intentionally made those changes in Haskell and J. --Ledrug (talk) 21:20, 16 January 2014 (UTC)

Thanks for catching that. I don't usually have that kind of issue, and I cannot remember what browser I might have used at the time.
Using html symbols instead of UTF-8 characters in the first place avoids this problem. Here's a test:

Right arrow →
Subset ⊂
I found JEdit capable of respecting Unicode characters. --Walterpachl (talk) 06:49, 17 January 2014 (UTC)

If people don't write code in HTML escape sequences, they shouldn't be required to post code here in them. Having to convert anything non-ASCII into escapes is an undue burden and error-prone. Plus if you plan to read and post text in unicode, what's the reason to choose a text editor or browser that can't write it properly? --18:51, 17 January 2014 (UTC)

Hopefully this will remain a one-off on my part. Sorry. --Paddy3118 (talk) 10:27, 18 January 2014 (UTC)

hi paddy this is Sxpert[edit]

I am still here and am working on java and objectivec implementations of the own password algorithm. please see my answers in the relative talk pages

Link injection[edit]

Hi, Paddy. When I submitted a Java code just now, a link was injected into the code. Could you have a look at it?

Hi. I had a word with Michael who started this fine site. He got back to me and said that a feature of the highlighter is to link into some languages official documentation. In fact, he was wondering why it was not creating documentation links for Python! --Paddy3118 (talk) 06:58, 9 June 2014 (UTC)
It's mutilated the code, so that it's no longer correct and compilable.Fwend (talk) 10:09, 9 June 2014 (UTC)
Does Michael realize that the autolink may fail and mangle the code instead? See (towards the bottom) Fwend (talk) 14:26, 9 June 2014 (UTC)
I changed it to use "java5" instead. It's a little better anyway since it's a Java 7 example ("java5" recognizes more of the Collections and things like that added in Java 1.5). In any case "d" was definitely wrong. If you use any highlighting you should use one that applies to the language you wrote it in. Using another language could introduce weird behavior if the highlighting for that other language changes at all in the future. if you want no highlighting just put no argument in the lang tag. --Mwn3d (talk) 12:48, 9 June 2014 (UTC)
I only changed the tag to D to get rid of the autolink, I used the java tag earlier. I didn't know about the java5 tag, by the way, that's even better. Thanks. Fwend (talk) 13:39, 9 June 2014 (UTC)

[email protected][edit]

Is there any plans on reinstating the (above) e-mail address?
Other than me addressing a particular admin (or opening it up to general discussion on its talk page ...)

Sorry. I don't know about that email? --Paddy3118 (talk) 23:15, 31 July 2014 (UTC)

The Rosetta Code entry   Reverse words in a string   probably should be renamed to
Reverse words in multiple strings   or possible variations on that.

It's a small difference, but is it worth it for a non-draft task?   I'm hesitant to change the title at this late date, and for other reasons, I'd prefer it that a Rosetta Code admin do the rename (if at all). -- Gerard Schildberger (talk) 20:23, 31 July 2014 (UTC)

I guess "Reverse word order on lines of a string" might be more descriptive, but I, personally, am OK with leaving it as it is. --Paddy3118 (talk) 23:15, 31 July 2014 (UTC)

Unlucky rollback of Power Set[edit]

Admin 40 Percent of the task description of Power set is about what the result are with empty sets. For my as a mathematician it is quite clear that the following examples also are explicitly given:

() = { } and ({}) = { , { } }

So why the erasure including my Scala contribution? In the first place you could deleted the templates only and in the second the empty set were in my opinion asked. And finally my contribution is erased. Please explain.--Siskus (talk) 18:32, 31 August 2014 (UTC)

Themed edits. I told you about this at the time. --Paddy3118 (talk) 07:23, 1 September 2014 (UTC)

P.S. What happened to your talk page? --Paddy3118 (talk) 07:23, 1 September 2014 (UTC)

"We tend to omit timings"[edit]

You wrote:

"we tend to omit timings on RC or restrict them to orders_of_magnitude comparisons..."

I'd like to make the case that the time has come for timings to be encouraged, at least on some pages such as Text_processing/Max_licenses_in_use. There are two basic reasons for this, one having to do with the way RC has evolved; and the other having to do with the nature of certain tasks.

Of course I realize that a language is not to be confused with the interpreters and compilers that may be available at a particular time, but as a practical matter, many people need information about what kind of performance can be expected if a particular language is chosen. With this understood, here are the two reasons:

1) For better or worse, RC showcases 535 languages, and probably the number will grow. More and more RC pages are including large numbers of these languages, but very few people will have the time to read, understand and assess more than a few entries, so some guidance as to which languages are appropriate to the task at hand would be extremely useful. More generally, as interesting as many of the languages represented on RC may be, many people visiting RC will at some point probably want to know which languages are most appropriate for them. Some may also want to gather information to determine which languages are really "toy languages" and which are heavyweights in general or in a particular domain. An important criterion in this regard is performance, and given the nature of RC and its authors, it seems to me that the only reasonable way for comparative performance information to be given is for authors to give both one or more performance metrics and some context, such as the CPU MHz rating for CPU times.

2) Some tasks, by their very nature, call out for performance comparisons. Text_processing/Max_licenses_in_use specifically requires that a large text file be used. This is a Good Thing, because it raises two questions:

a) Is there a compiler or interpreter for the target language that can manage a large volume of data?

b) What are its performance characteristics for that data?

Finally, I would like to emphasize that I was not the first to add performance data on the Text_processing/Max_licenses_in_use page. In fact, the very first entry (Ada) includes the elapsed time. I think this at least confirms the validity of the second point (2) above.

In summary, I encourage you to rethink this issue in light of the way RC has evolved. Should the task description of some pages include some specific performance metrics? What is the best way for performance-related information to be presented in a way that makes it somewhat comparable, without imposing excessively onerous obligations on authors? --Peak (talk) 13:19, 20 September 2014 (UTC)

Hi again Peak. I should point out from the beginning that:@
  1. It's not the first timethat this has been debated on RC (and by other long-term users too).
  2. The problem is the meaninglessness and depth of the problem when you try and do it right, that leaves sites like The Computer Language Benchmarks Game, with all of its resources geared specifically to timing comparisons specifically puts game in its title because of the problems in finding meaning in comparing the figures - yes, you can compare the figures they give, but their are many caveats - such as timings varying due to what Linux may happen to schedule as an OS task; cache, cache, and caches - they give warnings on the site such as here.
Yep, it would be good to get timings right, but seeing the effort put into the CLBG site, and their admonitions on timing, I think it better that with the state of any comparitive timing setup on RC, the best we should do is leave timings out, except for the occasional, obfuscated, local comparitive timing.
Obfuscated timings: If, in the process of converting a C solution to Awk, stating that the C returned almost immediately and the Awk solution after eating half a sandwich" emphasises that the you expect the C to always be faster, but that the Awk solution does not take too long. An alternative of using Unix time is bad because it presumes that those milliseconds of precision can be duplicated by anyone - including by the by the author on his box, a week later when his partner has moved their music collection onto the machine or installed a critical update.
What happens when a second user puts timings for C vs ADA and a third does ADA vs AWK, and a fourth ...; and you end up with multiple relative timings between languages? In an attempt to marshall that you might try for more information; stating your machine characteristics for example, but I am in the chip industry and manufacturers like Intel will ship improved parts with the same part number (as seen by normal consumers); firmware can change; ...
What happens when compilers change - do you trust that "update to fix the windows installer" not to slip in some "innocuous to the developer"change such as a slight difference in build options that make timings change for this same "release"?
Do your timings depend on your process of timing? Does running it all from unix make give the same timings as from an IDE for example?
  1. You can't just slap time in front of an invocation and believe in its result.
  2. Why you can't is involved.
  3. (Much) more infrastructure and a site geared to comparing timings Teaches you more about timing vaguaries.
I would tend to use a mix of the RC and CLBG sites if I wanted initial coarse comparisons but even then, you must be wary - Python, for example, is an interpreted language with probably slow timings when used by the average Python programmer, and yet many compute intensive tasks in fields including particle Physics, IC design, genome research, and statistics, successfully use Python. In a lot of these cases you have to understand that Python is giving access to best in class libraries written in C, Fortran, C++, C#, Java, ... - What the user programmes in is Python for accessibility and what he sees is great speed and the ability to harness large compute farms or supercomputer clusters but in a manageable way from "Python".
In my experience timings are usually a tertiary concern behind getting that component I am writing correct and in a reasonable development time. If working on an embedded system then timing may become more important (or less if as power and memory footprint can also rear their heads). When you know timings are tight then this can and does distort programming style, (such as the use of xor swapping), and which can be highly machine, OS, and network specific. Do we want non-idiomatic, timing optimised, machine specific code on RC? I think we would loose clarity.
--Paddy3118 (talk) 07:05, 21 September 2014 (UTC)

Thank you for taking the time to convey your rationale. I was already familiar with all the points you make, and I am disappointed that you don't seem to be able to see the forest for the trees. The nice thing about RC compared to CLBG (Computer Language Benchmarks Game) is that RC has so many more languages, so many more tasks, and presumably many more contributors (or at least, it's more open to contributions). Thus some of your points I see as arguing for having more timings. One of the things I think you overlook is that a simple timing is objective -- if it's there, users can interpret it, misinterpret it, or ignore it if they wish. Also, since RC is relatively open, if a timing seems "off" by someone, the additional objective information can be added.

One of the important points you make is that there has been discussion about this topic before. I think that is a sign that instead of censorship, some creativity is required. It was in that spirit that I suggested that on *some* pages, the task description should invite a brief, objective indication of performance (space and/or time as appropriate). I invite you to think "outside the box".--Peak (talk) 03:57, 22 September 2014 (UTC)

On objectivity (a slight aside)
Hi Peak, I would hope that others might join in as they have done in the past to reach a consensus. If your meaning of objectivity is something like:
"(of a person or their judgement) not influenced by personal feelings or opinions in considering and representing facts."
then no, at this point I am stating my case, (that was discussed before). I have read, and listened to your points however, but I still fear that yes, although we do have a lot of languages, we have no infrastructure to put in place anything like what CLBG has and I think that more than CLBG is needed.
(And back)
Note that I don't say no timings; just that more effort should be put into fuzzing timings to represent their true use for comparisons: saying that "algorithm A is approx 10x faster than Algorithm B for the givin inputs" is much better than just leaving behind the result of Unix time (with or without Machine and OS versions).
--Paddy3118 (talk) 06:56, 22 September 2014 (UTC)

capitalization of thingys named after people[edit]

Every place I looked, I noticed that Heronian triangles are capitalized.   Naturally, I didn't look everywhere, but if your time is short, I could modify (if you approve) the Rosetta Code task Heronian triangle   (primitive) to capitalize that name. -- Gerard Schildberger (talk) 11:41, 7 January 2015 (UTC)

Please do. Thanks. --Paddy3118 (talk) 17:11, 7 January 2015 (UTC)

Python Roots of a quadratic function[edit]

Hi Paddy, You may have noticed I've made a few Python contributions recently. I was just looking at this roots task and it has some issues. It was marked incorrect (back in 2009) and you fixed it by removing the first of two solutions. But both solutions had the problem cited by the incorrect tag, which was that they did not "do it better" as required by the task. I've coded up some "better" versions, a version using each of the two better methods mentioned in the description, and also a call to numpy.roots. (It's interesting to compare the three.) My question is what to do with the present solution. I could toss it entirely, put it under a subheading, or incorporate it into my comparison. It has a couple of other differences--it's Python 2 whereas I've been working with Python 3, and it returns an extra bit of information categorizing roots as same, different, real, and so on. If it were moved under a subheading it could stay about as it is, except I would like to add the b=-1e9 case to show that it loses all precision. —Sonia (talk) 17:57, 1 April 2015 (UTC)

I guess if it is wrong then it should only stay as an example of how not to do things. I am happy either way Sonia. :-)
(Gosh I've used a smiley several times this morning - I'm in a good mood). --Paddy3118 (talk) 05:19, 2 April 2015 (UTC)

Cholesky/Pascal identity[edit]


Cholesky decomposition of a symmetric matrix A is a lower triangular matrix L such that A=LL', where L' is the transpose of A. I don't know what you mean by "cholesky(pascal_upp(i)) == identity(i)", what software do you use? If L is the identity matrix, then LL' is also the identity matrix, certainly not A.

It's highly likely that you used a routine that does not check matrix symmetry, and that uses only the lower part in the process (as the upper part is supposed to be the same). This would make sense: if you forget the upper part, pascal_upp(i) is the identity, thus L is indeed the identity. But it's just plain nonsense, of course, to say that this is the Cholesky decomposition of pascal_upp(i).

May I suggest a good reference if you don't know much about numerical analysis? Golub & Van Loan "Matrix Computations" is really good. "Numerical Methods in Matrix Computations" by Ake Bjorck is also a nice choice.

Arbautjc (talk) 19:46, 28 April 2015 (UTC)

I see you have noticed one boundary in my maths knowledge :-)
Ifyou consider the Python solution to both tasks and add the following identity matrix generator function, then I was refereing to what is tested in the assert statement below. It looks like an identity holding for all positive integer n and is tested for afinite range of integers to be true but I don't have the maths to prove or disprove it. Maybe I should have stated it as "Paddy's conjecture".

Here's the code:

>>> def identity(n):
... return [[1 if j == i else 0 for j in range(n)] for i in range(n)]
>>> for row in identity(3): print(row)
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
>>> for row in identity(5): print(row)
[1, 0, 0, 0, 0]
[0, 1, 0, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 1, 0]
[0, 0, 0, 0, 1]
>>> for n in range(2, 300):
... assert cholesky(pascal_upp(n)) == identity(n), "Whoops"
... if not n % 20: print(n)

"This task has been flagged for clarification."[edit]

Dear Paddy3118: You recently reverted some minor edits I made to the introduction of Text_processing/1 without any comment, so I'm not sure what your objections were, but I would like to point out that the page has a "This task has been flagged for clarification." notice, and I was trying to improve the clarity of the text, which was (and is again now) written in rather poor English. I realize that you have a long history of contributions to RC and perhaps have a preference for "leaving well enough alone" in task descriptions, but as I mentioned, someone else (besides me) tagged the article specifically with respect to the section I edited. Since you have gone to the trouble of reverting the text, I invite you to improve the task description yourself. Thanks. Peak (talk) 02:28, 29 April 2015 (UTC)

duplicate links in Hofstadter Figure-Figure[edit]

On the discussion/talk page for the Hofstadter Figure-Figure task, you stated:

When I had finished the Python version I checked it with tables of the first 1000 values refered to from Sloane: here for R and here for S, although the table for S has an off-by-one error. --Paddy3118 ...

... the   here and here   (both links)   point to the same web-page. -- Gerard Schildberger (talk) 22:21, 21 May 2015 (UTC)

Fixed thanks. --Paddy3118 (talk) 05:52, 22 May 2015 (UTC)

Huge addition to Ledrug's page[edit]

Hi, unless Ledrug specifically asked for the data, it seems impolite to dump so much on his page and I would urge you to remove it as it can only cause offense. --Paddy3118 13:01, 27 October 2012 (UTC) That's Nigel Galloway being Nigel Galloway. The content was from Talk:Kaprekar numbers, which he somehow felt very strongly the urge to remove, probably because I said something not very flattering to him there. I undid that change because deleting 30k+ talk without even a word of explanation was basically vandalism, so he decided that those should go on my talk page instead (and of course it was removed from the original place again). Come to think of it, I kinda suspect this paragraph won't survive very long, either. --Ledrug 13:47, 27 October 2012 (UTC)

The above paragraph seems to be a reference at least in part to these two edits on the part of Nigel Galloway: A big addition and A big deletion. It is perhaps also a copy and paste of some bit of discussion from almost 3 years ago?
Anyways, the lack of adequate attribution made me curious and this represents my current best guess. --Rdm (talk) 15:07, 23 May 2015 (UTC)


Hi... I am glad you are helping shut out whoever is abusing our registration process. (And I think we are supposed to have email confirmation required before people can update pages, and I think that that does not currently function...)

But I also noticed that you are leaving "autoblock" active? I was told that we should leave that alone because it only winds up blocking the cloudfront cdn proxies. Or has that been fixed? --Rdm (talk) 21:05, 5 July 2015 (UTC)

Rdm, unfortunately I know very little about the inner workings and just try and remove spammers and their detritus when I see it. Is there something else I should be doing? Short Circuit is the guy who knows the most I'd guess. --Paddy3118 (talk) 06:54, 6 July 2015 (UTC)
In that case, maybe best to un-check the second box when blocking a user (so you do not block the IP Address) and leave a note for Short Circuit asking for clarification? If those IP blocks are incorrect, they'll need to be cleaned up. If they are correct, perhaps I should be doing that also.
That said, it would be interesting if you had been blocking entire geographic regions containing spammers. But it'll probably be messier than that... --Rdm (talk) 10:47, 6 July 2015 (UTC)
Yes, Autoblock will break with Cloudflare. I don't have time to fix that right now. --Michael Mol (talk) 15:20, 21 October 2015 (UTC)

Correction to Ceylon Y Combinator[edit]

Can you please clarify what is incorrect about the first Ceylon Y Combinator solution? AFAICT, your note is referring to "class RecursiveFunction", but this is just a container. The solution, overall, is very similar to others including Java 8, Scala, and Swift.

It seems odd to have a comment to say that the example does not fulfil the task without also stating why it deserves to be there. If its as OK as others then that needs to be said - or omit the comment altogether? --Paddy3118 (talk) 20:06, 18 August 2015 (UTC)

Oh, I guess you mean the third variation. I was simply following the pattern of the others - there are about 13 instances of "The usual version using recursion, disallowed by the task". If this is what you are referring to, and you think it would be better without the third version, I certainly have no problem removing it. Let me know.

HI. It isn't so much the code it is the comment - it seems to read as "this doesn't fit the task". Maybe the comment should go but leave the code as it is very like others. --Paddy3118 (talk) 07:44, 19 August 2015 (UTC)
Or maybe those other implementations should get a similar comment? Though perhaps the wording of the comment should also be changed - I'll do that. --Rdm (talk) 13:11, 19 August 2015 (UTC)

early promotion[edit]

I noticed that you promoted a Rosetta Code draft task (after one day), namely:

Normally, I would bring up issues in that particular Rosetta Code draft task's discussion page, but since it is already a full-fledged task, it would be difficult (I think) to resolve the wording (and/or requirements) of that task at this (late) date.   I never got to address my concerns during the short interim of it being a draft task.

So, I'm bringing my concerns here so as to not have a discussion that can't be resolved there   (or the possibility of that not happening here as well).   But, this issue should be addressed somewhere, namely, that not all computer programming languages use the same lexicons nor do they necessarily share the same definitions and/or nomenclatures, --- or to get technical:   stuff.

I may be way out on a limb here, so this would be a good place for me to see if my thoughts are on-topic or ... not.

So ... let's start sawing on that tree limb:

An   array   has different meanings to programmers of different computer languages.   (As an E.E., I think of antennae arrays, but that's me.)

To some, it is a program variable (or   thingy   if you want to get technical), denoted by a single (program variable) name (but it may have aliases) which have addressable (elements) to access/address each element.   Most people are familiar with one-dimensional arrays, and to keep things simple, let's just stick with a single dimension.   Most single-dimension arrays have a numeric index (almost always an integer, which could be zero or negative).

To others, an   array   may be a single (program) variable, with multiple elements (items) in it, or what some programmers would call a   list   or a   table   or some other name like   bag   or somesuch.   The elements/items are usually separated by blanks or some other well-known/well-defined separator token(s) such as commas, colons, or the like.   --- or (ugh)   tabs.

And still others may think an   array   as a type of hash table (array) that doesn't have a sequential addressing mode   (such as in the case of some types of associated arrays, as in the family of REXX languages and others).   The REXX language calls them   stemmed arrays.

But, back to a simple (one-dimensional) array such as in old-time FORTRAN, where the 1st element is number 1, and (say) continued upwards to element 100.

Of course, in the newer Fortrans, one could define/declare the array with   N   elements, where   N   is known only at run-time.   In this context, I can see the validity of asking the programmer to find the number of elements elsewhere in the program.   Most high-level languages have BIFs to return the low- and high-bound element (indices).

Of course, most languages allow the programmer to specify the starting element (number) and the ending element (or perhaps, the number of elements, starting at   N).

Clearly, in this (FORTRAN) case, there are exactly 100 elements in the array, even though, at this point in this discussion, the array hasn't been assigned any values, although they may have been assigned (or cleared) to zero   (or some other defined value as specified by the computer language).

This has nothing to do with   how many elements of the array have been assigned   values   (at least, by the program itself).

Some languages have a facility to detect if a variable (or element of an   array)   has a "value" that isn't assigned (i.e.,   undefined).

With REXX, it's more complicated.   If we use the traditional (as I understand it) definition of an   array,   (let's call the array   A)   then we could assign:


and the   A   array would appear to have two elements (assigned and defined).

Now; lets try something different:


and as with the 1st program, the   A   array would appear to have (again, as before) two elements (assigned and defined).

And, now for the fly in the ointment:


So, now we have (as previously) exactly two elements of the array defined, one element identified as   50   (two decimal digits or characters), and another element identified as   fly   (three lowercase letters).

And, if the two assignments were performed elsewhere (say, some subroutine or function), then there isn't really a handy or viable method to find out how many elements there are in the   A   array.   If the range of values for the elements is known, and the range is reasonable, one method is just to traipse through all the possible elements and determine how many of them are defined.   For the most part, this isn't a viable nor practical method.   Most programmers, when assigning a value to a new element, keep a list of all the (unique) element names (or indices, as that would be what people would call them if the elements are integers).

Note that nowhere does the REXX programmer tell/inform/declare how many elements that the   A   array has (or can have).   Indeed, there is no way for anything in REXX to be declared/defined/allocated/etc.

Well, OK, OK,   labels   are defined by ... er, ... defining/using them, and functions (or subroutines, routines, et alii) are kinda defined by usage, that is, when referenced in REXX statements.   Another thing are   conditions   (or subroutines) that handle exceptions, but all of these require a   label   which is identified by a colon after a symbol (statement label).

[Yes, yes, this train of thought has a caboose.]

I would like (besides world peace and the end to world hunger) to (possibly, kind of, maybe)   define   what an   array   is and for that matter, what an element of an array is   ---   at least, as far as the aforementioned Rosetta Code task.

By the way, no matter how it is defined, finding the number of elements of an array is problematic for the REXX language, but of course, we REXXers have a way to deal with this problem.   Some REXX implementations have a method to vary a   do   loop (structure) index to each of the defined elements, but it's not part of the Classic REXX language definition.

-- Gerard Schildberger (talk) 00:31, 8 October 2015 (UTC)

You are right; but in my defence...
The task was very popular and gained ten language examples by the time I promoted it with their editors not having much trouble finding a comparable interpretation of the task description. I usually look for at least four, and no unresolved issues in the talk page; but I now realise that there should be (more of) an element of "time-served as a draft" in my loose equation of when to promote from draft.
On your specific language questions, you bring up a point that I think Perl might share, as at least with hashes their is a method of providing a list of keys and creating a hash out of them with all the vales set to undefined. you then have the ability of a key existing in the hash but its value being undefined. Some languages might explicitly allow sparse arrays where possibly non-contiguous ranges of indices are allocated in memory making the concept of number of elements even more complicated.
I suggest you first attempt to interpret the task in the manner of the other examples then write about possible differences concisely with small example(s) in the task page or point to a larger exposition in the talk page?
--Paddy3118 (talk) 07:13, 8 October 2015 (UTC)
P.S. I have just seen that Array_length#J does this kind of extra explanation I mentioned. --Paddy3118 (talk) 07:19, 8 October 2015 (UTC)

Be careful with the IP blocks![edit]

WilliamNess reported on IRC that he's blocked because of an IP block that he didn't recognize. That means he's behind Cloudflare, and you inadvertently blocked at least one Cloudflare reverse proxy. :( ... and from the sound of it, you got a good chunk of Europe. --Michael Mol (talk) 18:45, 3 January 2016 (UTC)

I cleaned it up. MW doesn't make it easy to do through the web interface, so I went DB delving and disabled all autoblocks and cleared all outstanding IP blocks. --Michael Mol (talk) 19:10, 3 January 2016 (UTC)


There's quite a bit of spam visible at Special:RecentChanges. (I started to work on it but without delete privileges it's not very effective.) I tried to tell Mike but User talk:Short Circuit seems to be protected.

CRGreathouse (talk) 20:00, 20 January 2016 (UTC)

massive and erroneous editing[edit]

Since you are the creator of the Rosetta Code task "Heronian Triangles", I thought it should be brought to your attention that user   CRGreathouse   has done massive (global) editing for that task, and among other things, he made the Rosetta Code task preamble less readable (especially the math formulae, as I had made them larger to make the italics and superscripts more readable).   Now, that's a subjective thing, so I won't push that any further, I think a task's editing and re-editing of the preamble would just be counterproductive.

However, he removed a substantial amount of the REXX (programs) preambles which explains what and how the REXX programs worked and why the REXX programs made certain (logic) decisions.

Also, the 2nd REXX program (which is the version that is seven times faster) was removed without comment or discussion.   I thought that what the   discussion page   was for.

I also thought the numerous changes made to the REXX programs were for the worse, and it seemed those changes weren't beneficial nor made the reading of the program and/or comments any better.

Not the least of which, the Ring language was removed in its entirety, and I couldn't easily find who added that entry.

Because of the massive changes, I couldn't just undo the changes he made, it would've undone too many other changes.

If you could track down the author of the Ring author and inform him to re-enter that programming entry along with any comments and output, I'm sure it would be appreciated.

I spent over an hour restoring my comments, the two original REXX programs, their output, and the prologues of the two programs and an epilogue.   It seems such a pity to waste this much time undoing these massive damaging changes.

I do not want to address   CRGreathouse   directly, as I don't want to start an editing war.   But this massive change was the straw that broke the camel's back.   I think I used up my silver bullets, so I only restored what I thought was an excessively damaging change to the one language entry that I know extremely well (plus, I was the original author).   I have no idea why he removed the better of the two REXX versions, but both versions have their merits, the the 1st REXX version is the simplest (and shorter) and easier to understand, the 2nd REXX version is the preferred and robust version meant for   prime-time   execution.

Lastly, I also have no idea why the Ring programming entry was removed without so much as a comment, perhaps it wasn't worthy?   Or perhaps the baby was thrown out with the bathwater.   -- Gerard Schildberger (talk) 21:31, 8 July 2016 (UTC)

Multi-dimensional array[edit]

Hello, I added a question on storage order to this task, as it's a very important thing to know when calling libraries from another language, or even when programming in only the given language, in order to optimize memory access. There is an ongoing discussion about Fortran in the talk page, by the way. As this discussion shows, misconceptions are common. I don't know if there is a specific task on RC for this question, however I think it's the right place in a task about multi-dimensional arrays.

Arbautjc (talk) 12:27, 25 October 2016 (UTC)

previously deleted REXX subroutine entry[edit]

Sometime in the past, you moved (and then deleted the original) an entry (page) of the REXX subroutine $ERR.REX.

 18:58, October 3, 2014 Paddy3118 (Talk | contribs) deleted page $ERR.REX (Moved.)

(Yeah, yeah, I know, about a thousand days ago ···)

It is, as I believe, what "you" guys call an   orphan page.   A better word (I think) would be a   common   subroutine or function, that is, a page that belongs to   (but not owned by)   multiple Rosetta Code examples/entries/solutions.   The creation of mine which was to save space within a (REXX) example (as well as the overall space on individual Rosetta Code task's space).   That is, instead of including it in a (small, er, smallish) REXX example, it (the subroutine/function) would just be pointed to by a link (in a comment usually immediately after the source program).   These functions/subroutines are not one or two lines, no siree-bob.   There doesn't appear to be a way for a computer programming language entries to point to (the same language) subroutine for inclusion (within the programming entry).   I chose to use add a comment with a link (after the programming entry) that points to the (commonly used) subroutine.

To see this "error", see the Rosetta Code page $SPELL.REX, an altered Rosetta Code name for the actual program (function) which is named $SPELL#.REX.

The sentence (link) that doesn't work is:

 The   $ERR.REX   REXX program is included here   ──►   $ERR.REX.

The above page can be seen here:$SPELL.REX

There are others (links) that also fail similarly.

Now, most (if not almost all) Rosetta Code users don't have any sophisticated subroutines/functions of the type that I code up (mine intend to be super-sized versions of general programs.   A case in point is my $SPELL# REXX function that spells any number you can enter (well, any number up to around   600   3,000   decimal digits), along with options for spelling currency symbols, exponentiated numbers, use of commas in the translated number, "saying" of decimal points, decimal fractions, exponents, leading signs, American or English spelling (well, more than spelling, the English have a different system that uses milliards and the such), and many other options.   One options, expressing numbers as an ordinal (which I intend to add as a Rosetta Code task soon).   The use of ordinal numbers will, in turn, become another new Rosetta Code task (also, to be entered soon).   I could've just removed (very very very carefully) all the options that weren't needed, but that seemed like a lot of work (crippling of features), and worse, now there would exist multiple versions of the same function (by name), and that would surely be confusing whenever somebody comes across a version that doesn't work (compared to another version of the same name).   The program (subroutine/function) that was deleted was a general-purpose error routine that issued a myriad of error conditions (and does some minor fix-ups like enabling console output), as well as insuring that the error message was actually seen by the end-user (i.e., not suppressing error messages), as well as displaying the error message in red   (if the terminal supports color).   Other features are to add whitespace to the error text (making the error easier to see), as well as what program is issuing the error message, and then set the return code (R.C. or RC) in REXX   (or the host environment).

That deleted (subroutine) entry was pointed to by a number of REXX entries that used that subroutine.

There are numerous other entries that utilize the same mechanism;   REXX entries that use a common subroutine, and the subroutine was large enough to move it to it's own page instead of cluttering up multiple REXX examples.

The only one that was broken (as far as I know) was the link to   $ERR.REX;   all the other links (fortunately) are intact (again, as far as I know) and still work as intended.

I have tried to edit the original (that was deleted), but I received an error message that stated that the entry has been deleted.   I hate things that one can't fix.

One problem with moving (and deleting) the REXX subroutine   ($ERR.REX)   to a page that used it (invoked it) is that you didn't know that other REXX entries that also used the exact same subroutine and also had a link pointing to it, and now those links are now dead (that is, they don't work as they are pointing to an entry that no longer exists.

Could the original file/entry (that was deleted) be restored to enable those links that were made invalid?   Either that, you could put in place a re-direct thingy so that the other links would work again.   I believe that would be the easiest (and lest work) that would enable the broken links to work.

I never noticed the failing links until someone mentioned to me that one of my comments mentioned the location (via a link) to one of my REXX subroutines, but it is no longer functional.

There are a few handfuls of these types of links, and I no longer know where they all are.   I think re-instating the original link (that worked) would be the easiest to make thinks work again, ... the original entry (now broken), and all the others that are currently broken. nbsp; Because of the way it was removed (I think), the   what links here   thingy doesn't function.   -- Gerard Schildberger (talk) 04:07, 6 September 2017 (UTC)

By the way, it isn't an   orphan page,   as   What links here   shows that it isn't an orphan.   -- Gerard Schildberger (talk) 23:35, 6 September 2017 (UTC)

As a followup, the REXX language doesn't have any trigonometric functions, nor for that matter, even a   sqrt   (square root) function.

There are two ways to handle this   (the lack of some common functions, in particular, sqrt).

  •   Code (in-line) a sqrt function
  •   Code an external function named SQRT

(For the external name, the actual file extension name would be operating system dependent;   the reasons why it should be in capital letters is in the way REXX was developed many many years ago.)

Now, when one enters a REXX program in Rosetta Code, you can write the code either way, but the 2nd method does not lend itself easily here on Rosetta Code.

Fortunately, the   sqrt   function   (or others of the same ilk, but not-so-much for trig functions and the log functions)   can be coded fairly small, but an efficient   sqrt   function   (the kind that I like to write)   ain't so small   (but it runs fast, and supports the returning of   complex   results).   I choose to just condense (compact) my version of the   sqrt   function instead of supplying an external version.   I also chose to not comment the compacted REXX statements, as explaining how the sqrt function works isn't/wasn't part of the Rosetta Code task(s).

I did the same for other (rather small) REXX functions, and it does add REXX code to the end of the REXX programs and detract from the readability of the REXX entries somewhat.   But at that time, I didn't know much about the ways and means of entering   common   REXX functions/subroutines in/on Rosetta Code examples   (and, as far as I know, there still isn't a means).   Hells bells, I didn't even know enough to create a new page.   -- Gerard Schildberger (talk) 04:54, 6 September 2017 (UTC)

Hi Gerard. It was a long time ago! I have skimmed your comment and went looking through my past contributions list and:
  • Yes, I was moving a REXX entry on that day.
  • I have no displayed edit at that time. I jump from edits at 14.49 to 23:00.
Note that this isn't really a REXX entry per se;   it's a stand-alone page that isn't   directly   a part (an entry/example) of a Rosetta Code task, but it is a common subroutine/function that is referred to by several bona fide REXX entries.   -- Gerard Schildberger (talk) 22:02, 6 September 2017 (UTC)
I also can't see any mention around then of file ERR.REX in my contributions log?
It's named:
STOP PRESS: A search has found$err.rex . Could it be that you forgot the name? --Paddy3118 (talk) 18:43, 6 September 2017 (UTC)
No, I didn't forget the name.     $ERR.REX
-- Gerard Schildberger (talk) 22:02, 6 September 2017 (UTC)

Did you go to the Rosetta Code   $SPELL.REX   page   [that was mentioned above, it's in the 2nd light-blue box (on my browser)]?     ... re-quoting text from above ...

To see this "error", see the Rosetta Code page $SPELL.REX, an altered Rosetta Code name for the actual program (function) which is named $SPELL#.REX.

The sentence (link) that doesn't work is:

 The   $ERR.REX   REXX program is included here   ──►   $ERR.REX.

The above page can be seen here:$SPELL.REX

and once there, try to click on that:   The $ERR.REX REXX program is included here ──► $ERR.REX thingy.

I tried to get you to take the grand tour so you can see an actual "failure" instead of one of my own contrivance.   -- Gerard Schildberger (talk) 22:02, 6 September 2017 (UTC)

Hi Guys, Sorry to butt in to the conversation but I may be able to help. Paddy3118: That page did get deleted. It shows up in the deletion log and if you try to go to$ERR.REX you get the message quoted above. The message says it was moved but I can't find where. $err.rex was added in 2016.

Some questions for Gerard: Is the $err.rex essentially a duplicate of $ERR.REX? Could you just change the links to point to $ERR.REX? If I restore $ERR.REX can we convert $err.rex to a redirect page or does it have different content?

The page was supposed to be named in capital letters (as that is what the REXX program name is, and the original name was).   Renaming the original file isn't helping to clarify the naming problem, or the linking issue).   However, I wouldn't be adverse to having it both ways, that is, install a   re-direct   thingy so it can be found any which way.
As to changing the links ... I don't know where they all are.   Because of the broken link, I can't use a   What links here   tool.   But why does anybody have to change all the links (wherever they may exist) when they were working correctly in the first place?   This is just a symptom, and the cure shouldn't be worse than the disease.   If a file (or entry, or whatever) gets moved, make sure all the links to it remain in working order, even if a re-direct is needed.

  Some of those links were entered far to long ago for me to remember where they all are.   -- Gerard Schildberger (talk) 23:35, 6 September 2017 (UTC)

Also, it may be useful to make a category page to attach these REXX files to so this doesn't happen again. How do you refer to these pages(as a collection) REXX libraries? REXX NBIFs? REXX Subroutines? --Thundergnat (talk) 22:51, 6 September 2017 (UTC)

This won't happen again if they stay put, that is, don't get moved and/or renamed --- if it works, don't fix it.   If it does get fixed, then fix everything that refers (links) to it.   I know it's easy to "fix" something, and have somebody else take care of the follow-out.   But, to answer your question:   I don't refer to those pages (as a collection), for the main reason, they aren't a collection --- a loose hodge-podge or assorted REXX functions/subroutines/routines that are individually referred (invoked) by various REXX programs, most of which a user wouldn't care (or even have knowledge of) --- this kind of stuff happens   behind the curtain   and shouldn't be looked at or be concerned about).   The   $ERR.REX   is just one (internal wolf in an external sheep's clothing?) support (REXX) program that is used by several other REXX programs (Rosetta Code entries/examples), and REXXers don't have a   library   as such (although they may be stored in something like a library/directory/folder), they are just (REXX) programs that happen to reside in such a place that the REXX interpreter can (and must) locate them when invoked/called.   Most REXXers place these support programs (for a lack of a better name) in the same place (directory, folder, or mini-disk) as all their other REXX (mainline) programs.   The REXX language doesn't support a DLL library type thingy.   This is the closest thing to making those programs appear as if they were a (regular REXX) BIF (built-in function).   Also, I don't know what a   NBIF   is, and a search on the google-net didn't help any.   -- Gerard Schildberger (talk) 23:35, 6 September 2017 (UTC)

Just in case it wasn't obvious:   REXXers   are REXX programmers.   -- Gerard Schildberger (talk) 23:42, 6 September 2017 (UTC)

Ah. So this won't happen again as long as it doesn't happen again. Somehow I don't take much solace in that. BIF - built in function; NBIF non - built in function. No? ok, no. Well whatever you do or don't call them, since you have no opinion I'm going to call them REXX library routines.
But, but, but, but, they ain't   library   routines.   I realize you can choose to call them anything ya want, but that would be a misnomer, and   library   carries with it many notions and distinctions.   -- Gerard Schildberger (talk) 23:54, 6 September 2017 (UTC)
I asked for your input and I got "a loose hodge-podge or assorted REXX functions/subroutines/routines that are individually referred (invoked) by various REXX programs" [sic]. Perhaps '[Category:Rexx library routines]' is not as precise, but it isn't as flippant. If it makes you unhappy and you want to change it, feel free. It is a public wiki. Other than undeleting $ERR.REX, there is nothing I did that you couldn't. --Thundergnat (talk) 00:48, 7 September 2017 (UTC)
Sorry that you misunderstood my reply.   I was trying to   describe   what those thingys were, not   name   'em,   but in any case, what you choose for a name is OK, as it's just a place-holder name (as I understand it), not necessarily a description.   No flippancy was intended.   I don't fully understand what a   category   does, but if it helps "place" and/or "name" the stuff, then it's a good thing, of course.   By the way, I'm not unhappy, --- I was trying to think of a more (and/or accurate) name of such an animal, but I couldn't come up with one.   If there was any unhappiness, it was my failure to come up with a better name.   -- Gerard Schildberger (talk) 01:08, 7 September 2017 (UTC)
I understand that I could've added a   category,   (I think), but I didn't even know that was an option, nor did I even think that would solve the problem (with $ERR.REX and others).   I tried several things, I thought that merely changing the deleted entry would work, but I apparently didn't have the privileges needed for that to happen.   If you told me that merely added a   category,   would've fixed the problem, I could've done that --- well, with a little (or more than a little) help in setting up the   category   page.   The use of a   Template:Category   wasn't mentioned, I thought you were looking for descriptive/definitive name for such an animal for some other purpose.   -- Gerard Schildberger (talk) 01:40, 7 September 2017 (UTC)
Just an aside, how does one add a   category   page?   -- Gerard Schildberger (talk) 01:40, 7 September 2017 (UTC)
Sigh. Let me Google that for you --Thundergnat (talk) 02:17, 7 September 2017 (UTC)
Because these REXX pages are not "standard" could they have a prominent comment added on their purpose on RC after they are "tidied up" so they will remain good, tidy, RC pages? That comment might also include mention of the consequences of them being moved (or how best to move them if they do need moving). Thanks. --Paddy3118 (talk) 06:17, 7 September 2017 (UTC)
Actually, nothing was moved.   The main fix   (that I couldn't perform, I didn't have the authority, and it was a lack of knowledge about that restriction that stymied me in trying to fix the problem)   was to "un-delete" the deleted page   (either $T.REX or $t.rex   --- or something to that effect), and (I think) one   re-direct   was added   (for $T.REX or $t.rex).   All the other REXX pages just had a   category   added.   If you could write something that would be acceptable to all the powers-that-be, I'll add it to all those "non-standard" entries that I have entered.   All the REXX routines already have a comment stating what the subroutine/function/routine is supposed to be used for and by what (or whom?) it is invoked for.   I'll gladly add whatever paragraph would be suitable.   However, the text at the top of the   category   (Category: REXX library routines)   that was added has a very good explanation of what's what.   -- Gerard Schildberger (talk) 06:57, 7 September 2017 (UTC)