java中的函数式编程主要通过模拟函数子functor来实现,通过一个接口来声明函数子调用的接口(
例如call(ReturnType, ParameterList)),其中ReturnType表示函数返回的类型(通过参数多态实现), ParameterList表示参数列表。
functor一般有3种
* 1:谓词,返回值为boolean类型,表示判断是非的。
* 2:过程, 没有返回类型,表示计算的,在commons集合用闭包表示这个。
* 3:转换,有返回类型为非boolean类型,表示把参数tranform为结果类型。
partial, 分步运算,表示的一个绑定一个参数值返回相应的函数, 一步步的完成函数调用,或者也也可以绑定
一个参 数让后在返回一个函数子,在利用这个函数子来计算。
function composition,符合函数,表示的是z(x) = f(g(x)),把多个函数符合成单个函数。在程序中表现为以
一个函 数为参数返回复合后的函数。注意函数z(x)的定义域为g(x)的定义域,值域为f(x)的值域。
在f(x)中实现复 合 逻辑。
Higher-order functions 高阶函数,高阶函数表示的是以函数为参数或者返回函数的函数。
典型高阶函数
map(f, [a1, a2...an]) =[f(a1), f(a2), ..], 集合映射。
filter, 集合过滤。等集合操作。这些函数一般在集合上迭代执行操作。
folding, 叠加操作,就像连续连续叠加操作,有一个加函数,一个初始值,还有一个被叠加集合
,初始值的位置为了保存上一次计算的结果用来下次叠加的。
foldl(f, p, [a1, a2...an]) = f(f...f(f(p, a1), a2)..), an).
参考FunctionalJ, google的集合包里面也实现了functor.
例如call(ReturnType, ParameterList)),其中ReturnType表示函数返回的类型(通过参数多态实现), ParameterList表示参数列表。
functor一般有3种
* 1:谓词,返回值为boolean类型,表示判断是非的。
* 2:过程, 没有返回类型,表示计算的,在commons集合用闭包表示这个。
* 3:转换,有返回类型为非boolean类型,表示把参数tranform为结果类型。
partial, 分步运算,表示的一个绑定一个参数值返回相应的函数, 一步步的完成函数调用,或者也也可以绑定
一个参 数让后在返回一个函数子,在利用这个函数子来计算。
function composition,符合函数,表示的是z(x) = f(g(x)),把多个函数符合成单个函数。在程序中表现为以
一个函 数为参数返回复合后的函数。注意函数z(x)的定义域为g(x)的定义域,值域为f(x)的值域。
在f(x)中实现复 合 逻辑。
Higher-order functions 高阶函数,高阶函数表示的是以函数为参数或者返回函数的函数。
典型高阶函数
map(f, [a1, a2...an]) =[f(a1), f(a2), ..], 集合映射。
filter, 集合过滤。等集合操作。这些函数一般在集合上迭代执行操作。
folding, 叠加操作,就像连续连续叠加操作,有一个加函数,一个初始值,还有一个被叠加集合
,初始值的位置为了保存上一次计算的结果用来下次叠加的。
foldl(f, p, [a1, a2...an]) = f(f...f(f(p, a1), a2)..), an).
参考FunctionalJ, google的集合包里面也实现了functor.