5 ms·
Y Combinator in Python
- kingkongrevenge 18y agoPerl6 ftw: my $factorial = sub (Int $x) { $x < 2 ?? 1 !! $x * &?ROUTINE($x - 1); }
- markessien 18y agoThis must be about the 6th different 'Y Combinator in X' I have seen on this site.
- burke 18y ago# 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
- silentbicycle 18y agoOf 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?
- pavelludiq 18y agoThe Y combinator is just like python decorators, or generators, you just HAVE to blog about them, or you're not C001!
- daragh 18y agoThat's a pretty solid butchering of the design of daringfireball.net