读书人

Functor结合, 参数集合, Curry

发布时间: 2012-10-29 10:03:53 作者: rapoo

Functor组合, 参数集合, Curry
Functor组合, 参数集合, Curry

Ajoo曾经写过面向组合子编程系列。我也帮着助威。
面向组合子编程和并不是简单意义上的Composite Pattern。Composite Pattern只是一个简单的基本Pattern。
面向组合子编程只是用到了Composite Pattern,面向组合子编程本身的内容复杂许多,以至于复杂到这样的程度,数据和行为必须分开,形成Visitor Pattern。
而一般意义上的Compositor Pattern都是数据和行为在一起的对象的组合。
用于面向组合子编程中,一般是指只有行为没有数据的Functor对象进行组合。

基本的模型是这样。包括3个参与部分。算法,Functor算子,参数。
算法基本上是固定的,Functor算子可能自由组合,参数也可能一个或者多个。

下面根据Functor和参数这两个方面介绍面向组合子编程的3种类型。

1. Functor组合 Combinator, Pipe
Functor有多个,参数只有一个。
这一类的特点是,Functor移动,参数不动。

这是最常见的一类。
常见于用于工作流程控制的逻辑组合子。for each, or, and, not, if, else 等。
Hibernate的 Criteria Query 的 And , Or , Like, Equals的组合,也属于这一类。



我觉得,你举的例子都是第三种curry。
functor成为操作符,操作值和返回值是同一类型,体现的就是第三种curry。
因为这种链式调用的作用,就是减少参数个数。

读书人网 >软件架构设计

热点推荐