1
Kotlin FP(ラムダ、関数)を使ってY-コンビネータ関数を書くことはできますか? JSでコトリンを使ってY-コンビネータ機能を書くには?
Y = λf.(λx.f (x x)) (λx.f (x x))
:
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
私はこれをどのように行うことができますか? Kotlinで