_评论人:michalmarczyk_
@Stuart
为了证实上述说法,以下是在Clojure 1.6 REPL和Clojure 1.7 REPL中评估的相同代码片段,两个REPL均是新启动的,并得到不同的结果
Clojure 1.6.0
(let [foo 1 bar 2
请求
jira
[foo bar])
[3 2]
Clojure 1.7.0
(let [foo 1 bar 2
请求
jira
[foo bar])
[3 4]
文档中并未承诺没有这样的意外交互会发生,但如上所示,任何依赖1.6行为的现有代码在1.7中已被破坏。指定某些行为并在未来保持一致将防止出现此类意外。
我认为当前行为在某种程度上是“随机的”,因为没有原则上的原因可以预期它——因此我提出了一个提案,在修补程序中实现{{:or}}默认值引用封装作用域。