> function Y($F) { > $func = function ($f) { return $f($f); }; > return $func(function ($f) use($F) { > return $F(function ($x) use($f) { > $ff = $f($f); > return $ff($x); > }); > }); > }
That's interesting; I should be able to implement tail-recursion in a similar fashion using, say, trampolines,[1] shouldn't I? > On the other hand, we may want to add some way to refer to the > closure currently being run. We should have this information, so it > should not be too hard to do. That would be great; we could even do some benchmarking against the Y-combinator (which I've always loved, but never used). Footnotes: [1] http://en.wikipedia.org/wiki/Tail_recursion#Implementation_methods -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php