clojure地图功能急切?

YMA*_*YMA 6 jvm clojure map lazy-evaluation

根据Mark的精彩教程页面,"map函数应用一个给定函数,该函数将一个参数带到集合中的每个项目,返回结果的惰性序列".

然而,当我做以下事情时:

(def input-message-list (range 100 126))

(defn test-123 [in]
  (println "doing " in)
  (str "out " in))

(def output-test (map
                   test-123
                   input-message-list))

(first output-test)
Run Code Online (Sandbox Code Playgroud)

,在REPL中我得到了全范围的println副作用,而不仅仅是第一个元素!

这里的人怎么了?

Ser*_*abe 7

已经在这里回答:

因为一次评估32个元素

您的范围少于32个元素.