PHPでのカリー化と部分関数の使用

カリー化と関数の部分的な適用については、この記事をご覧ください

実際、ここにPHPでの実装があります: github.com/Elfet/Functional

部分的な使用例:


use Functional\Partial; function foo($a, $b, $c) { return "foo<$a, $b, $c>\n"; } $p = Partial::apply('foo', 1, 2); echo $p(3); // foo<1, 2, 3> 


名前付きパラメーターを使用することもできます。

 $p = Partial::applyNamed('foo', array('a' => 1, 'c' => 3)); echo $p(2); // foo<1, 2, 3> 


デフォルト値を設定できます:

 $p = Partial::apply(function ($a, $b, $c = 'c') { return "function()<$a-$b-$c>\n"; }, 1); echo $p(2); // function()<1-2-c> 


または、後でオプションを追加します。

 class Boo { public function woo($a, $b, $c) { return "Boo::woo<$a, $b, $c>\n"; } } $p = Partial::apply(array($boo, 'woo')); $p->applyArgs(1, 2); $p->applyNamedArgs(array('b' => 3)); echo $p(); // Boo::woo<1, 3, 2> 


カリー化の例:

 use Functional\Curry; function foo($a, $b, $c) { return "foo<$a, $b, $c>\n"; } $c = new Curry('foo'); echo $c->invoke(1)->invoke(2)->invoke(3); // foo<1, 2, 3> 


または、短縮形の構文を使用します。

 echo $c[1][2][3]; // foo<1, 2, 3> 

Source: https://habr.com/ru/post/J143957/


All Articles