1
我可以使用Kotlin FP(Lambda,函數)編寫Y組合函數嗎?如何使用Kotlin編寫Y組合函數?
Y = λf.(λx.f (x x)) (λx.f (x x))
在JS:
function Y(f) {
return (function (g) {
return g(g);
})(function (g) {
return f(function (x) {
return g(g)(x);
});
});
}
var fact = Y(function (rec) {
return function (n) {
return n == 0 ? 1 : n * rec(n - 1);
};
});
在咖啡:
coffee> Y = (f) -> ((x) -> (x x)) ((x) -> (f ((y) -> ((x x) y))))
[Function]
coffee> fact = Y (f) ->(n) -> if n==0 then 1 else n*f(n-1)
[Function]
coffee> fact(10)
3628800
我怎樣才能做到這一點?