dependency injection with Clojure
July 12, 2017
寫 clojure 的時候,雖然套用了 REPL-driven development 的開發方式,已經相對可以讓大多數的函數很快地做過測試。但是,隨著要開發的專案愈來愈大,還是一樣需要用標準的寫法來寫單元測試 (unit test) 。有一個非正規的統計,如果是 Ruby on Rail 的專案,一般而言,90% 的函數都是有副作用的。然而, clojure 語言的專案,往往只有 40% 的函數帶有副作用。
即使是寫 clojure 語言,還是會遇到有 side effect 的函數,那比較好的寫法是怎麼樣呢?
Continue reading →groupby
May 21, 2017
一開始是我在寫 4clojure 的練習題的時候,寫到了一個題目,要重新實現 clojure 語言的 groupby 函數。我糾結了好一陣子,又查了不少資料,才勉強用 reduce 寫出來。然而,最近卻在工作中,用上了 groupby 。
(fn f [k coll]
(reduce
(fn [c v]
(update-in c [(k v)] (fnil conj []) v))
{} coll))
Continue reading →
pattern
February 28, 2017
patterns = programming with abstactions that are not powerful enough
先來引述一下 Paul Graham 的句子
Continue reading →