Exception Clojure lazy seq给了我算术异常
我试图重新实现我的自定义映射函数,但它以一种奇怪的方式工作。有人能解释一下为什么会这样吗Exception Clojure lazy seq给了我算术异常,exception,clojure,fibonacci,lazy-sequences,Exception,Clojure,Fibonacci,Lazy Sequences,我试图重新实现我的自定义映射函数,但它以一种奇怪的方式工作。有人能解释一下为什么会这样吗 (defn my-map [f coll] (lazy-seq (when-let [s (seq coll)] (cons (f (first s)) (my-map f (rest s)))))) (take 10 (my-map inc (range))) (take 10 (->> [0 1] (iterate (fn [[a b]]
(defn my-map [f coll]
(lazy-seq
(when-let [s (seq coll)]
(cons (f (first s)) (my-map f (rest s))))))
(take 10 (my-map inc (range)))
(take 10 (->> [0 1]
(iterate (fn [[a b]] [b (+ a b)]))
(my-map first)))
第一个take按预期工作,但第二个给我以下错误(看起来它在评估所有序列):
你说得对,这是一只萤光虫。你应该把它记录下来 以下工作在lighttable中没有问题
(->> [0 1]
(iterate (fn [[a b]] [b (+ a b)]))
(take 10)
(my-map first))
及
问题在Light表中,在simple REPL中,它按预期工作。
(->> [0 1]
(iterate (fn [[a b]] [b (+ a b)]))
(take 10)
(my-map first))
(take 10 (->> [0 1M]
(iterate (fn [[a b]] [b (+ a b)]))
(my-map first)))