作者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