命令式代码能够使用if-else和for这样的过程控制,
函数式则不能。所以我们需要函数组合子。组合子可以组合 其他函数(或其他组合子),并作为控制逻辑单元的高阶函数,组合子通常不声明任何变量,也不包含任何业 务逻辑,他们旨在管理函数程序执行流程,并在链式调用中对中间结果进行操作。
常用的组合子:
辅助组合子:
无为(nothing)、照旧(identity)、默许(defaultTo)、恒定(always)
函数组合子
收缩(gather)、展开(spread)、颠倒(reverse)、左偏(partial)、右偏 (partialRight)、柯里化(curry)、弃离(tap)、交替(alt)、补救(tryCatch)、同时 (seq)、聚集(converge)、映射(map)、分捡(useWith)、规约(reduce)、组合 (compose)
谓语组合子 过滤(filter)、分组(group)、排序(sort)
其它 组合子变换 juxt
分属于SKI组合子