A functional programming using php.
DVSSZQIQ[email protected]@XFEEJOH !LBU[DIBOH
View Slide
21)1͖Ͱ͔͢ʁ
!LBU[DIBOH
ʊਓਓਓਓਓਓਓਓਓਓਓਓਓʊʼɹಥવ4USJOH͕*OUʹมΘΔɹʻʉ:?:?:?:?:?:?:?:?:?:ʉ
ʮྫ͑ɺ1)1Λආ͚Δʯ
IUUQKBXJLJQFEJBPSHXJLJ&&"&"&"#[email protected]@DSPQQFEKQH
1)1JTBCPVUBTFYDJUJOHBTZPVSUPPUICSVTI:PVVTFJUFWFSZEBZ JUEPFTUIFKPC JUJTBTJNQMFUPPM TPXIBU [email protected]
「PHPは、歯ブラシみたいなものですね。毎日使うものですけど、だから何でしょう?」IUUQBOPOEIBUFMBCPKQ
+BWBͱൺֱ
ແ໊͕ؔ͋Δ˞+BWBҎલͱͷൺֱ
$f = function($a, $b) {return $a + $b;};echo $f(2,3); // => 5
$f = (function($a, $b) {return $a * $b;})(2,3); // FAIL!!!
$fib = function($x) {return $x < 2? $x: $fib($x-1) + $fib($x-2);}));echo $fib(6); // FAIL!!
ΧϦʔԽ
IUUQTHJTUHJUIVCDPNLBU[DIBOH˞༵ۚޕޙͰ͢
$f = F::curry(function($_) {return $_[0] + $_[1];});echo $f->_(2)->_(3)->_();
IUUQTHJTUHJUIVCDPNBKJZPTIJWHCBECEF˞༵ۚޕޙͰ͢
$c = curry(function($a, $b){return $a + $b;});echo $c->_(2)->_(3);
function YComb($f) {$yc = curry(function($y, $x)use ($f) {return $f($y($y), $x);});return $yc($yc);}
echo (YComb(curry(function($f, $x){return $x < 2? $x: $f($x-1) + $f($x-2);})))->_(6);
ʮ͜Εɺࣃϒϥγͱ͍ͯ͠ʹͳΔϨϕϧʯ
-PWFZPVS1)1