我正在使用教程学习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