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 应该修复其奇怪的行为。

by
谢谢!这段对话澄清了很多。
0
by

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

ClojureScript 的读取似乎很奇怪,但由于这是未定义的,很难说这是错误的。 :)

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

by
是的,我遇到这个问题正是因为 ClojureScript 的不同行为,在跨平台代码上做属性测试的时候。
by
可以重新打开它,没问题。
我在[TCHECK-155](https://clojure.atlassian.net/browse/TCHECK-155)上作出了评论,但我认为并不应该正式重新开放。
在tools.check 1.1.0中进行了更改和发布
谢谢!<3
...