fixedpoint.jp - Y Combinator on Javascript




Y Combinator on Javascript

2007/02/14に Scheme での Y Combinator の例について書きましたが、それをもとに Javascript でも容易に Y Combinator を関数として定義することができます。

ブラウザ上で動作するコードを含む html は以下のようになります:

<html>
<head><title>y.html</title></head>
<body>
<p id="result"></p>
<script type="text/javascript">
var Y = function (f) {
	var g = function (x) {
		var h = function (y) {
			return (x(x))(y);
		};
		return f(h);
	};
	return g(g);
};

var fact = function (f) {
	return function (n) {
		if (n == 0) return 1;
		return n * f(n - 1);
	};
};

document.getElementById('result').innerHTML = '(Y(fact))(5) => ' + (Y(fact))(5);
</script>
</body>
</html>

© 2006,2007 Takeshi Abe