関数型プログラミングの基礎に
コラムとしてYコンビネータのことがでていた。
わかったような、わからないような。。。
なぜ明示的に再帰を使わずに、再帰ができるかの証明がWikipediaに出ていた。
https://ja.wikipedia.org/wiki/%E4%B8%8D%E5%8B%95%E7%82%B9%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8D%E3%83%BC%E3%82%BF
他のサイトからscriptをコピペして試してみた
<script>
function Y(f) {
return (function(g) {
return function(m) {
return f(g(g))(m);
};
})(function(g) {
return function(m) {
return f(g(g))(m);
};
})
}
var factorial = Y((fact) => {
return (n) => {
if (n==0) {
return 1;
}else {
return n*fact(n-1);
}
};
});
alert(factorial(4));
</script>
0 件のコメント:
コメントを投稿