欢迎!请参阅关于页面以获取更多关于如何使用此站点的信息。
可以破坏编译器,使得当向量处于语句位置时输出错误(我无意中做到了这一点)。这不会破坏Clojure测试套件的任何部分,但它确实会破坏有效的Clojure代码(对我而言是影响了taoensso的encore)。向测试套件添加测试以捕获此类缺陷。
评论者:[email protected]
这里也需要进行编译器更改吗?
评论者:alexmiller
我认为他的意思是编译器是好的,但如果不是这样的话,没有任何测试会导致你注意到。
评论者:michaelblume
是的,就是这个。
评论者:jafingerhut
是意外吗?Clojure 编译器接受这样的 'code'?如果我在项目中看到这样的 Clojure 代码,我会假设它是一个错误。
在我看来,这似乎应该是有效的代码(尽管除非它是主体中的最后一项,否则没有理由这样做)。
(链接:脸红)当然,在返回位置使用这样的向量和映射应该是有效的。远离返回位置的是看似奇特的东西,但正如你所说,编译器没有理由拒绝它。
请注意,集合的元素将被求值,因此由集合中的代码引发的副作用将被执行。
`user=> (let []
`
[(future (println "hi")) (future (println "there"))] 1)
hithere 1 `