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时发现:[链接](https://clojurians-log.clojureverse.org/clojure-dev/2019-06-07)

alexmiller 13:06:13

@gfredericks :/ 这个表示“语言开始解释”的标记并不是无效的关键字,所以应该可以生成。 Clojurescript应该会修复它的奇怪行为。

谢谢!这次对话使我澄清了很多。
0

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

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

关于test.check,这是不是你的问题?我本人对此并无强烈感受,但如果它让人们的日子变得艰难,似乎不生成这些是有道理的。

是的,我正是因为clojurescript的不同行为遇到了这个问题,在跨平台代码上进行基于属性的测试时。
重启它对我来说没有问题
我在[TCHECK-155](https://clojure.atlassian.net/browse/TCHECK-155)上提出了评论,但我感觉不适宜正式重新开启。
在tools.check 1.1.0中进行了更改并发布
谢谢!<3
...