yuyat/curry

函数支持柯里化

v0.9.0 2014-10-13 14:29 UTC

This package is auto-updated.

Last update: 2024-08-25 21:02:09 UTC


README

函数支持柯里化。

实际上,它可以将接受多个参数的函数转换成嵌套函数,每个嵌套函数只接受一个参数,如下所示。

f(x, y, z) => f(x)(y)(z)

它可以部分应用。以下所有表示相同。

f(x)(y)(z)
f(x)(y, z)
f(x, y)(z)
f(x, y, z)

使用方法

基本使用

<?php
use function yuyat\curry;

$sum = curry(function ($x, $y, $z) {
    reteurn $x + $y + $z;
});

echo $sum(1)->apply(2)->apply(3), PHP_EOL;
// => 6

echo $sum[1][2][3], PHP_EOL; // Ruby-like short syntax
// => 6

柯里化函数接受可变参数

对于接受可变参数的函数,您必须将实际参数长度指定为第二个参数。

<?php
use function yuyat\curry;

$sum = curry(function (/* numbers to calculate sum */) {
    $result = 0;

    foreach (func_get_args() as $arg) {
        $result += $arg;
    }

    return $result;
}, 3);

echo $sum(1)->apply(2)->apply(3), PHP_EOL;
// => 6

作者

Yuya Takeyama