![]() | This article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||||||||
|
How is this article not redundant with the Fixed point combinator article?
This one does't seem to add anything new and has very serious grammatical and markup problems.
In particular, the introductory paragraph is very hard to read, especially with overuse of "in terms of" and "-argument". The sentences are far too long -- more like a high-level journal article than an encyclopedia, and the function markup in the introduction doesn't display properly.
The example is good, but is very informal -- it needs to be more encyclopedic in tone.
The Y combinator section is just plain confusing -- the central point is ill-defined and the derivation is informal and unfocused. The metaphorical explanation at the end, especially, is misleading and unnecessary.
In short, flagging for cleanup.
--bmills 18:51, 2 November 2005 (UTC)
>>How is this article not redundant with the Fixed point combinator article?<<
>> the function markup in the introduction doesn't display properly<<
>>The metaphorical explanation at the end, especially, is misleading and unnecessary.<<
What does "anonymous" mean in this context? Michael Hardy 03:55, 15 November 2005 (UTC)
In the second, step, you define a new, recursive function, namely h. Now, instead of defining f by using f itself, you define h by using h itself, and passing around a dummy parameter f (that is not used at all in the function)
Should the second step perhaps be: replace f(x-1) by f(x-1,f) ? —Preceding unsigned comment added by 128.176.181.114 (talk) 20:47, 7 July 2009 (UTC)
Besides the fact that anonymous function is not a well-defined concept, the construction given in this article uses names for functions; so how is this recursion anonymous?
This article appears to be the product of somebody with a poor understanding of lambda calculus, where functions are indeed anonymous, in that we don't need to give them names, you can just write well formed expressions in the calculus. But then this article is nothing more than an application of some fix-point combinator; whether it's Y or not, it doesn't really matter, because there's an infinity of fix-point combinators. Pcap ping 01:42, 21 August 2009 (UTC)
This whole article appears to be a rehashing of the Z combinator (see link above) which is needed in call-by-value languages, because Y loops forever there (only works in Haskell and other lazy evaluation or call-by-name languages). But this article is so far removed from explaining any of this that it's effectively a pointless mental exercise reading it, and totally redundant alongside Fixed point combinator. Did I mention this article cites no sources? Pcap ping 01:50, 21 August 2009 (UTC)
I propose we redirect this to Fixed point combinator. Pcap ping 01:53, 21 August 2009 (UTC)
This notion is virtually unheard of in print, but it does appear in two very recent C# books [1], as well as some MSDN blogs, e.g. [2]. But note how the author of that blog concludes that he simply rediscovered the Y combinator! So, this is worth no more than a little mention in the fixed point combinator article. Pcap ping 18:03, 21 August 2009 (UTC)
This article was previously a redirect (from merge) to fixed-point combinator. However, that is a very technical article with largely different subject, and in that context “anonymous recursion” is at best an occasional term, at worst an abuse of language.
However, anonymous recursion is a legitimate distinct topic – calling a function without using its name – and is possible without the technical machinery of a fixed-point combinator, simply by exposing the current context to programs. This is notably used in JavaScript and Perl, at least.
I’ve accordingly expanded this page into a proper article – hope it looks good, and please improve it!
I came up with a simpler lambda calculus solution for factorial. All I did was take the anonymous recursion version, and replace "lambda a, b" with "lambda a: lambda b:", and "(a, b)" with "(a)(b)".
(lambda f: lambda x: f(f)(x)) \
(lambda f: lambda x: 1 if x == 0 else x * f(f)(x-1))
But, this is original research I guess, so I won't put it on the page. Also the existing explanation might help people trying to understand the Y combinator. — Preceding unsigned comment added by 15.203.233.79 (talk) 22:19, 27 April 2015 (UTC)