假设我们有一个昂贵的计算 expensive 。如果我们认为 map 产生一个惰性序列,那么下面的函数是对映射集合的所有元素还是仅对最后一个元素评估函数 expensive

(last
  (map expensive '(1 2 3 4 5)))

IE。这是为所有值 1..5 评估 expensive 还是只评估 (expensive 5)

最佳答案

将评估整个集合。一个简单的测试可以回答您的问题。

=> (defn exp [x]
     (println "ran")
     x)
=> (last
     (map exp '(1 2 3 4 5)))
ran
ran
ran
ran
ran
5

关于clojure - last of a lazy seq 会评估 clojure 中的所有元素吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8280516/

10-10 05:18