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 中,: 是否被认为是有效的、无效的,或者 c) 未定义/留待未来扩展?

如果是有效的,那么说 (name (keyword "/")) 是一个 clojurescript 错误是否安全?

如果是 b) 或 c),那么 TCHECK-155 应该重新打开吗?

谢谢!

2 条回答

0

我在调查tree-sitter-clojure时发现以下内容:https://clojurians-log.clojureverse.org/clojure-dev/2019-06-07

alexmiller13:06:13

@gfredericks :/ 表示 "语言开始解释是打开的" 并不是一个无效的关键字,因此应该可以生成。Clojurescript 应该修复它的奇怪之处。

by
谢谢!那次对话确实澄清了很多。
0
by

它是未定义的/留给未来的扩展。

Clojurescript 的读取似乎很奇怪,但鉴于这是一个未定义的属性,很难说它是错误的。 :)

关于 test.check,这是您的问题吗?我个人对它没有强烈的感受,但如果它让人们的生命变得困难,似乎不生成这些内容是合理的。

by
是的,我正是因为遇到不同的 Clojurescript 行为而遇到了它,当时在进行跨平台代码的基于属性的测试时。
by
没有问题,可以重新打开它。
by
我在 [TCHECK-155](
by
在tools.check 1.1.0版本中修改并发布
by
谢谢!<3
...