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

欢迎!有关此如何运作的更多信息,请参阅 关于 页面。

0
test.check

Clojure 和 Clojure 读取器都将 :/ 作为一个关键字接受,并且 test.check 生成它。然而,从我在 Slack 上的对话中了解,这似乎没有正式被视为有效。例如在 这个帖子 中提到,其中提到了 clojure-dev 中的早期讨论,但不幸的是我找不到它。

建议从 test.check (TCHECK-155) 中移除它,该请求以引用 Alex Miller 的权威和引言而被关闭,但 Alex 也表示他认为这是一个 test.check 的错误。

在 TCHECK-155 的引言中也提到“clojurescript 应该修复其怪异行为”,但我无法找到原始对话,因此我不确定这指的是什么,或者是否有票据。我发现 clojurescript 在至少一个方面与 clojure 的行为不同

(name (keyword "/")) ;;clj => "" ;;cljs => "/"

我的问题是,在 EDN 和/或在 Clojure 中,:/ 是否被认为是 a) 有效,b) 无效,或 c) 未定义/留给未来扩展?

如果是 a) 有效,那么可以说 (name (keyword "/")) 是 clojurescript 的一个错误吗?

如果是 b) 或 c),这意味着 TCHECK-155 应该重新打开吗?

谢谢!

2 个答案

0

在研究tree-sitter-clojure时,我发现以下内容:

alexmiller13:06:13

@gfredericks :/ "open for the language to start interpreting" 并不是一个无效的关键字,因此应该没有问题,cljs 应该能修复这种奇怪的表现。

谢谢!这次对话澄清了很多事情。
0

这是未定义的,留给未来扩展。

Clojurescript的读法看起来很奇怪,但鉴于这是未定义的,很难说它是错误的。 :)

关于test.check,这对你来说是问题吗?我并不特别在意,但如果这让人很难受,似乎不生成这些是有道理的。

是的,我特别是因为跨平台代码的属性测试遇到了这个问题。
我同意重新开启它。
我在[TCHECK-155](https://clojure.atlassian.net/browse/TCHECK-155)上评论了,但我觉得不是正式重新开启它的职责。
by
在第1.1.0版工具.check中进行修改和发布
by
谢谢!<3
...