Tarsana 入门
Tarsana 是由 Amine Ben Hammou 编写的开源库,可在 GitHub 上下载。它的灵感来自 JavaScript 的函数式编程库 Ramda JS。它没有任何依赖关系,有 100 多个预定义函数可用于不同目的。FP 中的函数分布在不同的模块中,有多个模块,如函数、列表、对象、字符串、数学、运算符和常用模块。Tarsana 可从 GitHub 下载( https://github.com/Tarsana/functional ),也可通过 composer 安装。
composer require Tarsana/functional
下载完成后,我们必须通过导入 Tarsana\Functional
命名空间来使用它,就像下面的代码一样:
use Tarsana\Functional as F;
Tarsana 的一个有趣功能是,我们可以将任何现有函数转换为柯里化函数。例如,如果我们想用 Tarsana 来使用我们的求和函数,那么它将看起来像这样:
Unresolved include directive in modules/ROOT/pages/ch13/ch13-02.adoc - include::example$Chapter13/2.php[]
这将分别产生 7 和 13 的输出结果。Tarsana 还可以使用 __()
函数保留占位符。下面的示例显示了占位符中提供的条目的数组 reduce
和数组求和:
Unresolved include directive in modules/ROOT/pages/ch13/ch13-02.adoc - include::example$Chapter13/2.php[]
Tarsana 还提供了管道功能,我们可以从左到右应用一系列函数。最左侧的函数可以具有任何迭代性;其余函数必须是一元函数。流水作业的结果不会被柯里化。让我们看看下面的例子:
Unresolved include directive in modules/ROOT/pages/ch13/ch13-02.adoc - include::example$Chapter13/2.php[]
由于我们已经探索了 Tarsana 的一些功能,因此我们准备开始使用 Tarsana 创建函数式数据结构。我们还将使用简单的 PHP 函数来实现这些数据结构,这样,如果我们不想使用函数式编程,也可以同时实现这两个部分。让我们开始堆栈的实现。