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

欢迎!有关clojure的工作原理,请参阅关于页面获取更多信息。

0
test.check

Clojure及其读取器都接受:/作为关键字,并且test.check会生成它。但是从Slack上的对话中我了解到,它并没有被正式认为是有效的。例如,在提及clojure-dev中较早讨论的这一帖子中,但很遗憾我没有找到它。

有人建议从test.check中删除它(TCHECK-155),该问题通过与Alex Miller的权威引用得到关闭,但他也指出,这被视为test.check的bug

TCHECK-155中的引用还提到“clojurescript应该修复其怪异的地方”,但我找不到原始的对话,所以我不确定这指的是什么,或者是否有相关票证。我发现clojurescript在至少一个方面与clojure的行为不同:

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

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

如果是a)有效的话,那么能否安全地说(name (keyword "/")是clojurescript的bug?

如果是b)或c),那么是否意味着TCHECK-155应该被重新打开?

谢谢!

2 答案

0

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

alexmiller13:06:13

gfredericks:/ 是“准备开始解析语言”的标记,而不是无效的关键字,因此应该可以生成。 Clojurescript 应该修复它的奇怪之处。

谢谢!这次对话澄清了许多问题。
0

它是未定义的/用于未来扩展。

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

关于test.check,这对你来说是问题吗?我个人对此没有强烈的想法,但如果它让人们的生活变得困难,似乎合理地不生成这些。

是的,我遇到这个问题正是因为不同Clojurescript的表现,在跨平台代码进行基于属性的测试时。
没问题,可以重新打开它
更改并在 tools.check 1.1.0 中发布
谢谢!<3
...