WEB开发网
开发学院软件开发Java 实战 Groovy: 用 curry 过的闭包进行函数式编程 阅读

实战 Groovy: 用 curry 过的闭包进行函数式编程

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 非常漂亮,是么?五星计算现在我们来研究闭包的一些更刺激的方面,实战 Groovy: 用 curry 过的闭包进行函数式编程(5),我们先从一个机制开始,用这个机制可以表示包含计算模式 的闭包,所以我们开发了一个叫做 Functor 的类,把它们封装成 static Closure,计算模式是一个

非常漂亮,是么?

五星计算

现在我们来研究闭包的一些更刺激的方面。我们先从一个机制开始,用这个机制可以表示包含计算模式 的闭包,计算模式是一个来自函数式编程的概念。计算模式的一个例子就是用某种方式把 List 中的每个元素进行转换。因为这些模式发生得如此频繁,所以我们开发了一个叫做 Functor 的类,把它们封装成 static Closure。清单 6 显示了一个摘要。


清单 6. Functor 封装了一个计算模式
package fp 
abstract class Functor { 
 // arithmetic (binary, left commute and right commute) 
 public static Closure bMultiply   = { x, y -> return x * y } 
 public static Closure rMultiply   = { y, x -> return x * y } 
 public static Closure lMultiply   = { x, y -> return x * y } 
 
 // ... 
 // composition 
 public static Closure composition  = { f, g, x -> return f(g(x)) } 
   
 // lists 
 public static Closure map  = 
  { action, list -> return list.collect(action) } 
   
 public static Closure apply = { action, list -> list.each(action) } 
   
 public static Closure forAll = { predicate, list -> 
                 for(element in list) { 
                  if(predicate(element) == false) { 
                    return false 
                  } 
                 } 
                 return true 
                } 
  // ... 
}

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:实战 Groovy curry

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接