再帰的な関数を無名で扱うためのアルゴリズム。
rubyの例:
Y= proc{|g|
proc{|f|
g[f[f]]
}[
proc{|f|
g[proc{|y| f[f][y]}]
}
]
}
fact = proc {|f| proc{|n| n==0 ? 1: n * f[n-1]}}
p Y[fact][5] #=> 120
ツイート
再帰的な関数を無名で扱うためのアルゴリズム。
rubyの例:
Y= proc{|g|
proc{|f|
g[f[f]]
}[
proc{|f|
g[proc{|y| f[f][y]}]
}
]
}
fact = proc {|f| proc{|n| n==0 ? 1: n * f[n-1]}}
p Y[fact][5] #=> 120