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)))