Helo,为了学习 clojure,我对作用于序列的 clojure.core 函数产生了兴趣。最近,我注意到一些奇怪的行为,想解释一下以下表达式之间的区别:
我想要做的是:
user=> (reduce + (take-while (partial > 1000) (iterate inc 1)))
499500
但是,当我存储错误(iterate inc 1)
时:def
user=> (def a (iterate inc 1))
#'user/a
user=> (reduce + (take-while (partial > 1000) (a)))
java.lang.ClassCastException: clojure.lang.Cons cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0)
iterate inc 1
有人可以解释一下在表达式中直接存储和使用它有什么区别吗?我知道这a
是一个懒惰的序列,但我错过了一些东西......
非常感谢您的宝贵时间。