5分でわかる? 関数型 php の潮流
DESCRIPTION
今、関数型 PHP が熱いTRANSCRIPT
5分でわかる? 関数型PHPの潮流
@yuya_takeyama
今
関数型PHP が熱い
functional
でも、 お高いん でしょう?
(ハードル的な意味で)
はい
ぶっちゃけ 僕も
よくわかってない
でも
functional
「機能的」
OO厨でも 学ぶべき
ところは多い
押さえておくべき キーワード
参照透過性 (または副作用につ
いて)
例えば、 forをやめる
例えば、 setterをやめる
例えば、 変数の再代入を
やめる
immutability
次
高階関数
関数を 生成する関数
あるいは
関数を 引数に受ける
関数
(デザパタ厨には お馴染み
Strategy Pattern)
遅延評価
$range = function ($start, $end, $step = 1) { for ($i = 1; $i <= $end; $i += $step) { yield $i; } }; !
foreach ($range(1, 100) as $n) { echo $n, PHP_EOL; }
ジェネレータでrange
今
関数型PHP が熱い
PHP5.6の 新機能
use function
自分の ベンダ空間に
関数定義しまくり
use function my_awesome_func;
次
variadic parameters
可変長引数
function(...$args) {}
次
farewell to
func_get_args()
parameters unpacking
引数の 動的展開
func(...$args);
farewell to
call_user_func_array()
おすすめ ライブラリ
nikic¥iter
ジェネレータ実装者 による
関数型コレクション操作ライブラリ群
map reduce filter
全部 遅延 評価
次
igorw¥retry
超簡単に リトライが 実装できる
$user = retry(5, function () use ($id) { return User::find($id); });
in HHVM
$user = retry(5, () ==> User::find($id));
cool
あと
igorw¥retry issues#3
にopcodeレベルでの 詳説
知りたいが、 あなたを(ry
あとあと
それでは
このあたりで
Thank you for
Listening