请在2024 Clojure 状态调查!中分享您的想法。

欢迎!请参阅关于页面了解有关该功能的一些更多信息。

0
编译器

有可能破坏编译器,使得当向量处于语句位置时发出错误(我不小心做到了这一点)。这不会破坏 Clojure 测试套件中的任何部分,但它会破坏有效的 Clojure 代码(对我来说,它影响了 taoensso 的 encore)。向测试套件中添加测试,以便捕获此类缺陷。

8 个答案

0

评论者:[email protected]

这里需要编译器更改吗?

0

评论者:alextiller

我认为他意思是编译器是好的,但如果它不对,也没有测试能告诉你。

0

评论者:michaelblume

是的,就是这样。

0

评论者:jafingerhut

Clojure 编译器接受这样的 '代码' 是一个意外吗?如果我在项目中看到这样的 Clojure 代码,我会认为这是一个错误。

0
by

评论者:alextiller

在我看来,这应该是有效的代码(尽管除了是主体中的最后一个表达式外,没有理由这样做)。

0
by

评论者:jafingerhut

(链接:facepalm) 当然,这样的返回位置应该是有效的,用于返回这样的向量或映射。除返回位置外,这个奇怪的东西看起来有点奇怪,但正如你说的,没有理由编译器应该拒绝它。

0
by

评论者:alextiller

请注意,集合的元素将被评估,因此集合并发执行将由集合中的代码触发的副作用执行。

`
user=> (let []

     [(future (println "hi")) (future (println "there"))] 
     1)

hi
there
1
`

0
by
参考:https://clojure.atlassian.net/browse/CLJ-1776(由michaelblume提交)
...