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

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

0票数
test.check

Clojure及其读取器都接受:/作为关键字,且test.check会生成它。然而,根据我在Slack上的交流,它似乎并没有被正式视为有效。例如,在这个主题中,提到了clojure-dev中之前的讨论,但我遗憾的是没有找到。

有人建议从test.check中移除它(TCHECK-155),该请求被管理员关闭,并引用了Alex Miller的话,但Alex也表示他认为这是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 :/ 是“语言开始解析”的状态,而不是一个无效关键词,所以应该可以生成。Cljs 应该修复其奇怪的行为。

谢谢!那场对话真的澄清了很多。
0票数

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

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

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

是的,我特别遇到这个问题是因为 Clojurescript 的不同行为,在跨平台代码上进行属性测试时。
我可以接受重新打开它。
我在[TCHECK-155](https://clojure.atlassian.net/browse/TCHECK-155)中评论了,但我觉得我不适合正式重新开启它。
在tools.check 1.1.0中更新并发布
感谢!<3
...