作者Etude ( )
看板Ruby
标题Re: [Ruby] recursive lambda
时间Fri Apr 20 10:40:26 2007
※ 引述《godfat (godfat 真常)》之铭言:
: 附带连结版:1) http://blog.godfat.idv.tw/2007/04/ruby-recursive-lambda.html
: 2) http://lightyror.thegiive.net/2007/04/ruby-recursive-lambda.html
: [Ruby] recursive lambda
纯粹使用 lambda 的方法:
fix = lambda {|f|
lambda {|x| f[lambda {|y| x[x][y]}]
}[lambda {|x| f[lambda {|y| x[x][y]}]}]
}
f = lambda {|this|
lambda {|x| x == 0 ? 1 : x*this[x-1]}
}
fact = fix[f]
fact[10]
=> 3628800
f2 = lambda {|this|
lambda {|x| x == 0 || x == 1 ? 1 : this[x-1]+this[x-2]}
}
fib = fix[f2]
(0..10).map &fib
=> [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.31.182
1F:推 godfat:漂亮! 04/20 17:53
2F:推 noctem:出现了!XD 听说这东西叫做 Z combinator... 04/23 02:07
3F:推 kojilin:Y combinator!?想得出来的人真是... 04/23 18:18