42linoge / functionalphp
PHP的函数式编程工具
dev-master
2016-05-18 23:35 UTC
Requires (Dev)
- steos/php-quickcheck: dev-master
This package is not auto-updated.
Last update: 2024-09-24 21:31:07 UTC
README
从函数式世界(tm)到PHP的小型库移植工具。这是一项持续的工作,我在学习FP的同时进行,还涉及到范畴论。
我已经编写了一些测试。所有函数都是柯里化的。
编写柯里化函数
use CLinoge\Functional\F; function myFunction(... $args) { $myFunction = F::curry(function($arg1, $arg2) { // Operate on $arg1 and $arg2 return $result; }); return call_user_func_array($myFunction, $args); }
单子,函子
提供了对IO、Maybe和Left/Right的基本支持。它们的实现基于《Mostly Adequate Guide》和RamdaJS中暴露的思想。
函数占位符
对于n元柯里化函数f,以下成立
use CLinoge\Functional\Placeholder; f(a1, a2, ..., a(N - 1), aN) == f(a1, new Placeholder, ..., new Placeholder, aN)(a2)(a(N-1));
AutoCurry对象
实验性功能,您可以测试它
use CLinoge\Functional\CurryTransform; $constructor = CurryTransform::take(SomeClass::class); $object = $constructor(a1, a2, ..., aN); $object->someMethod($a1)($a2) == $object->someMethod($a1, $a2);
贡献
添加文档,提高性能,编写测试:-)。我每天都在改进它,还没有达到稳定阶段^^。