top

Lazy...Lazy....XD

看到這篇 Lazy.js 作者的介紹…
http://philosopherdeveloper.com/posts/introducing-lazy-js.html

想到 Java 中的這篇…
http://cr.openjdk.java.net/~briangoetz/lambda/sotc3.html

其實 Python 中也有類似概念,像是 map、filter 函式,實際上傳回的是 map、filter 物件,而不是 list…

JavaScript:
  1. var array = Lazy.range(1, 1000).toArray();

  2. console.log("First 10 squares that are evenly divisible by of 3:");
  3. var sequence = Lazy(array)
  4.                   .map(function(x) { return x * x; })
  5.                   .filter(function(x) { return x % 3 === 0; })
  6.                   .take(10)
  7.                   .each(function(x) { console.log(x); });
複製程式碼


Java 中類似的操作:
  1. int sum = shapes.stream()
  2.                 .filter(s -> s.getColor() == BLUE)
  3.                 .map(s -> s.getWeight())
  4.                 .sum();
複製程式碼



不過有人覺得這樣很醜,但也有人說這樣比較明確,就 Java 的調調而言,還是明確比較好,畢竟不會因為少了個 stream 呼叫,就讓 Java 變得不囉嗦一些…XD

TOP

既然談到了 Lazy,那就來看看這個神人,懶惰的錯誤處理:
http://apocalisp.wordpress.com/2008/05/16/thrower-functor/

TOP

我看到他的程式碼排版,第一個想到的是 Clojure 或 Lisp…XD

TOP

回復 4# caterpillar


真的不過不知道為什麼一點也不覺得很難讀

TOP

回復 5# Steven Yang

橫向展開是函數式的基本排版風格,也許是你寫過函數式的東西吧!

TOP

回復 6# caterpillar


   大學第一個語言是Scheme現在在用Scala學functional programming

TOP

回復 7# Steven Yang

有機會來交流一下函數式的心得吧!…
http://openhome.cc/eGossip/Blog/

TOP