通过应用单变量函数将旧的延迟序列转换为新的延迟序列

art*_*lla 3 clojure lazy-evaluation

假设在clojure中我有一个懒惰的序列(abcd .....)并且假设我有一个单变量函数f(x).如何将旧的延迟序列转换为新的延迟序列(f(a)f(b)....).即我寻求转型.谢谢 :

(a b ....) [lazy] -> (f(a) f(b) ....) [also lazy]
Run Code Online (Sandbox Code Playgroud)

mik*_*era 6

map做你需要的一切.它保留了您应用它的序列的"懒惰".

(map f old-lazy-sequence)
=> [new-lazy-sequence]
Run Code Online (Sandbox Code Playgroud)

无限范围的示例:

(take 5 
  (map (partial * 2) 
       (range)))
=> (0 2 4 6 8)
Run Code Online (Sandbox Code Playgroud)