camspiers/php-fp

函数式编程助手

0.2.1 2014-08-12 23:39 UTC

This package is auto-updated.

Last update: 2024-09-19 14:00:01 UTC


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>