我正在使用教程學習Clojure,並且遇到類似4clojure和99 lisp problems的問題。我在解決問題方面做得很好,但是我的代碼似乎總是像下面的例子那樣混亂。如何自己學習Clojure的方法?
對於一種像Clojure一樣靈活的語言,初學者如何學習慣用的方法,而不必讓別人手牽着手?
我亂七八糟的例子:
(defn intersectall [lset]
(when-not (empty? (first lset))
(if (reduce #(and %1 %2) (map #(stars/member* (front lset) %) (rest lset)))
(cons (front lset) (intersectall (cons (rest (first lset)) (rest lset))))
(intersectall (cons (rest (first lset)) (rest lset))))))
如果你想知道,該功能intersectall
僅僅返回輸入的所有子列表的共同元素的列表。
所以對:
(def lset '((6 :pears :and)
(3 :peaches :and 6 :peppers)
(8 :pears :and 6 :plums)
(:and 6 :prunes :with some :apples)))
=> (intersectall lset)
(6 :and)
這個問題是來自於小策士第117
你應該在[Google Clojure組]上發佈這類問題(http://groups.google.com/group/clojure?pli=1)。 – 2013-06-17 07:12:15