2

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

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

上記のコードは Fib シーケンスを生成します。次のように 2 行目を書き換えたいと思います。

(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

これらのように書き換えることは不可能ですか、それとも適切な方法ですか?

ありがとう。

4

1 に答える 1