欢迎!请参阅关于页面了解有关此方式的更多信息。
可能破坏编译器,使得在语句位置上向量输出错误(我意外地这样做了)。这不会破坏Clojure测试套件的任何部分,但确实破坏了有效的Clojure代码(对我而言是在taoensso的encore中)。向测试套件添加测试,以便捕捉这类缺陷。
评论由: [email protected]发表
这里还需要做编译器变更吗?
评论由: alexmiller发表
我认为他是在说编译器没问题,但如果有问题,没有测试会告诉你。
评论由: michaelblume发表
是的。
评论由: jafingerhut发表
Clojure 编译器接受这样的 'code' 是偶然的吗?如果我在项目中发现 Clojure 代码是这样的,我会认为这可能是一个错误。
在我看来,这似乎应该是有效的代码(尽管没有太多理由在除最后一行表达式外的情况下做这件事)。
(链接:facepalm) 当然,这在返回位置应该是有效的,因为这样可以返回这样的向量和映射。远离返回位置的是奇怪的东西,但正如你所说的,编译器没有理由拒绝它。
请注意,集合的元素将被评估,因此由集合中的代码触发的副作用将被执行。
`user=> (let []
`
[(future (println "hi")) (future (println "there"))] 1)
hithere 1 `