camspiers / php-fp
函数式编程助手
0.2.1
2014-08-12 23:39 UTC
Requires
- php: >=5.6.0-dev
- nikic/iter: ~1.1
Requires (Dev)
- camspiers/bench: dev-master
- phpunit/phpunit: ~4.2
README
柯里化
柯里化函数在调用时参数少于所需参数时,会返回一个新的函数。新返回的函数将应用这些参数,并且也是一个可柯里化的函数。
这种编程模式可以用来将更复杂的函数构建自更简单的函数。
例如:
// Create a curryable function $concat = fp\curry(function ($a, $b) { return $a . $b; }); // Create a new function with 'Mr. ' applied $addTitle = $concat('Mr. '); echo $addTitle('Spiers'); // Mr. Spiers
组合
$h = fp\compose($f, $g);
函数组合会返回一个新的函数($h
),它将首先应用第二个函数($g
),然后将结果传递给第一个函数($f
)。
用法
将普通函数转换为柯里化函数
$map = fp\curry('array_map');
创建可柯里化的非闭包函数
function _tag($tag, $text) { return "<$tag>$text</$tag>"; } function tag(...$args) { return fp\curry('_tag')->__invoke(...$args); } // We now have a paragraph function $p = tag('p'); // We now have a div function $div = tag('div'); echo $div($p("Some text")); // <div><p>Some text</p></div>