

Y Combinator in Python - technoguyrob
http://www.akropolix.net/rik0/blogs/2008/10/29/the-y-combinator-in-python/

======
silentbicycle
Of course, if you actually _use_ this you can smash the stack -- Python
doesn't currently have any kind of tail call optimization. (That factorial
function isn't tail-recursive anyway, though.)

It doesn't look like Ruby has tail-call optimization, either. Lua does...what
other primarily-scripting (i.e., not Scheme or Haskell) languages do?

------
burke

        # Ruby 1.8.7
        def Y
          lambda { |f| f.call(f) }.call(
            lambda do |g|
              yield(lambda { |*n| g.call(g).call(*n) })
            end)
        end
        Y { |this| lambda { |n| n == 0 ? 1 : n * this.call(n - 1) } }.call(5)
        #=> 120

------
pavelludiq
The Y combinator is just like python decorators, or generators, you just HAVE
to blog about them, or you're not C001!

------
markessien
This must be about the 6th different 'Y Combinator in X' I have seen on this
site.

------
daragh
That's a pretty solid butchering of the design of daringfireball.net

------
kingkongrevenge
Perl6 ftw:

my $factorial = sub (Int $x) { $x < 2 ?? 1 !! $x * &?ROUTINE($x - 1); }

