ugrás a tartalomhoz

Y-Combinator in PHP

virág · 2009. Ápr. 16. (Cs), 10.39
Az 5.3-as PHP névtelen függvényeiről
 
1

Oh my god

Gixx · 2009. Ápr. 16. (Cs), 16.39

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);
        });
    });
}
na erre még alszok egyet (egy évet)...
2

És megmagyarázza!:-)

Ustak · 2009. Ápr. 16. (Cs), 21.51
One well-known (and perhaps the simplest) fixed point combinator in the untyped lambda calculus is called the Y combinator. It was discovered by Haskell B. Curry, and is defined as

Y = λf·(λx·f (x x)) (λx·f (x x))

We can see that this function acts as a fixed point combinator by expanding it for an example function g:
Y g = (λf . (λx . f (x x)) (λx . f (x x))) g
Y g = (λx . g (x x)) (λx . g (x x)) (β-reduction of λf - applied main function to g)
Y g = (λy . g (y y)) (λx . g (x x)) (α-conversion - renamed bound variable)
Y g = g ((λx . g (x x)) (λx . g (x x))) (β-reduction of λy - applied left function to right function)
Y g = g (Y g) (definition of Y)

És a kedvenc részem a perhaps the simplest :-) :-) :-)
Ám legalább Curry neve imigyen tudatosul (bennem nemrég tudatosult).