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

欢迎!请查看关于页面以获取更多关于此信息。

0
编译器

可能会破坏编译器,使得在语句位置上的向量被错误地发出(我意外地做到了这一点)。这不会破坏 Clojure 测试套件的任何部分,但会破坏有效的 Clojure 代码(对我而言是 taoensso 的 encore)。向测试套件添加测试,以便可以捕获这种类型的缺陷。

8 个回答

0

评论者:[email protected]

这里也需要进行编译器更改吗?

0

评论者:alexmiller

我认为他是在说编译器本身没有问题,但如果它有问题,任何测试都不会告诉你。

0

评论者:michaelblume

是的,就是这样。

0

评论者:jafingerhut

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

0

评论者:alexmiller

在我看来,这似乎应该是一段有效的代码(尽管在没有它是主体中的最后一表达式的理由的情况下,永远没有理由这样做)。

0

评论者:jafingerhut

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

0

评论者:alexmiller

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

`
user=> (let []

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

hi
there
1
`

0
参考:https://clojure.atlassian.net/browse/CLJ-1776(由michaelblume报告)
...