我使用逆时针运行REPL,但我也注意到了Leiningen.
我可以调用def来定义var两次.例如,
=> (def a 1)
#'fractal.core/a
=> a
1
=> (def a 2)
#'fractal.core/a
=> a
2
Run Code Online (Sandbox Code Playgroud)
Clojure是一种函数式编程语言,在FP对象中应该是不可变的.如果我能在什么意义上做到这一点是不可改变的?
谢谢你的评论.
重新定义defvar(即设置根绑定,而不是临时/线程局部重新绑定)主要是用于开发的工具.由于标准全局函数和值(使用def/defn定义的那些)是基于var的,因此您可以重新定义它们,而无需重新启动正在编辑的clojure程序.
请注意,变量不是值,它们明确地旨在是对值/函数的可变引用.