lha*_*hne 4 clojure lazy-evaluation
我们假设我们有一个昂贵的计算expensive.如果我们考虑map生成一个惰性seq,那么下面是否expensive为映射集合的所有元素或仅针对最后一个元素评估函数?
(last
(map expensive '(1 2 3 4 5)))
Run Code Online (Sandbox Code Playgroud)
即,这是评估expensive所有值1..5还是仅评估(expensive 5)?
整个系列将进行评估.一个简单的测试回答你的问题.
=> (defn exp [x]
(println "ran")
x)
=> (last
(map exp '(1 2 3 4 5)))
ran
ran
ran
ran
ran
5
Run Code Online (Sandbox Code Playgroud)