curry.php

 curry.php

A functional programming using php.

F2f9d54e8fafad3fce62bbf072cdab1e?s=128

katzchang

March 29, 2014
Tweet

Transcript

  1. DVSSZQIQ LZPO@LBP@XFEEJOH  !LBU[DIBOH

  2. 21)1͸޷͖Ͱ͔͢ʁ

  3. !LBU[DIBOH

  4. 21)1͸޷͖Ͱ͔͢ʁ

  5. ʊਓਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹಥવ4USJOH͕*OUʹมΘΔɹʻ ʉ:?:?:?:?:?:?:?:?:?:ʉ

  6. ʮྫ͑͹ɺ1)1Λආ͚Δʯ

  7. IUUQKBXJLJQFEJBPSHXJLJ&&"&"&"#3BTNVT@-FSEPSG@DSPQQFEKQH

  8. 1)1JTBCPVUBTFYDJUJOHBTZPVSUPPUICSVTI :PVVTFJUFWFSZEBZ JUEPFTUIFKPC JUJTBTJNQMFUPPM TPXIBU  IUUQFOXJLJRVPUFPSHXJLJ3BTNVT@-FSEPSG

  9. 「PHPは、歯ブラシみたいなものですね。 毎日使うものですけど、だから何でしょう?」 IUUQBOPOEIBUFMBCPKQ

  10. None
  11. +BWBͱൺֱ

  12. ແ໊ؔ਺͕͋Δ ˞+BWBҎલͱͷൺֱ

  13. <?PHP $f = function($a, $b) { return $a + $b;

    }; echo $f(2,3); // => 5
  14. <?PHP $f = (function($a, $b) { return $a * $b;

    })(2,3); // FAIL!!!
  15. <?PHP $fib = function($x) { return $x < 2 ?

    $x : $fib($x-1) + $fib($x-2); })); echo $fib(6); // FAIL!!
  16. ΧϦʔԽ

  17. IUUQTHJTUHJUIVCDPNLBU[DIBOH  ˞༵ۚ೔ޕޙͰ͢

  18. <?PHP $f = F::curry( function($_) { return $_[0] + $_[1];

    }); echo $f->_(2)->_(3)->_();
  19. IUUQTHJTUHJUIVCDPNBKJZPTIJWH CBECEF ˞༵ۚ೔ޕޙͰ͢

  20. <?PHP $c = curry( function($a, $b){ return $a + $b;

    }); echo $c->_(2)->_(3);
  21. <?PHP function YComb($f) { $yc = curry( function($y, $x) use

    ($f) { return $f($y($y), $x); }); return $yc($yc); }
  22. <?PHP echo (YComb(curry( function($f, $x){ return $x < 2 ?

    $x : $f($x-1) + $f($x-2); })))->_(6);
  23. ʮ͜Ε͸ɺࣃϒϥγͱͯ͠΋࢖͍෺ʹͳΔϨϕϧʯ

  24. -PWFZPVS1)1

  25. None