使用` - >`(“线程优先”宏)Clojure

时间:2013-07-02 06:43:04

标签: clojure

http://clojuredocs.org/clojure_core/clojure.core/-%3E

(def step #(-> [(% 1) (+ (% 0) (% 1))]))
(def fib #(map first (iterate step [0 1])))

上面的代码生成了Fib序列,我想重写第二行,如下所示:

(def fib #(-> (iterate step [0 1]) (map first)))

(def fib #(-> [0 1] (iterate step) (map first)))

但是,当

时,两个代码都会失效
(println
 (take 10 (fib))
)

有错误

java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.core$first

是不可能像这些或任何正确的方式重写?

感谢。

1 个答案:

答案 0 :(得分:3)

你想要->> thread-last macro