`
shxiao
  • 浏览: 30399 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java函数式编程

阅读更多

      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.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics