ActionScript3.0でYコンビネータを実装
まあタイトルどおりですね。ASはちゃんと無名関数とかあるので楽です。
基本的には以下のSchemeコードを移植する感じです。
http://www.loveruby.net/ja/misc/ycombinator.html
package { import flash.display.Sprite; public class Main extends Sprite { public function Y(f) { return ( (function (proc) { return f(function (arg) { return (proc(proc))(arg); }); })(function (proc) { return f(function (arg) { return (proc(proc))(arg); }); }) ); } public function fact(f) { return ( function (n) { if (n == 0) { return 1; } else { return n * f(n - 1); } } ); } public function Main():void { trace((Y(fact)) (5)); } } }