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

alexmiller13:06:13

@gfredericks :/ 它是“对语言开始解释开放”的,不是一个无效关键字,所以可以生成。CLJS应该修复其奇怪之处。

谢谢!那次对话真让我有了很多启发。
0

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

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

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

是的,我因为clojurescript的行为差异遇到了这个问题,当时在跨平台代码上进行属性测试时。
我同意重新开放它
我在 [TCHECK-155](
在 tools.check 1.1.0 中更改并发布
谢谢你!<3
...