http://www.loveruby.net/ja/misc/ycombinator.html
昼休みの息抜きに。とりあえず写経。
fact0 = lambda {|f| lambda {|n| if n.zero? 1 else n * f.call(n - 1) end } } y = lambda {|f0| lambda {|f| f0.call(lambda {|arg| f.call(f).call(arg)}) }.call( lambda {|f| f0.call(lambda {|arg| f.call(f).call(arg)}) } ) } puts y.call(fact0).call(5) # => 120