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 :/ 是 "等待语言开始解析" 而不是一个无效的关键词,所以应该可以生成。ClojureScript 应该修复它的怪异行为。

谢谢!那次对话澄清了很多。
0 投票

它尚未定义/留待未来扩展。

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

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

是的,我具体遇到这个问题是因为 clojurescript 的不同行为,在进行跨平台代码的属性测试时。
对我来说,重新打开它没问题。
我在 [TCHECK-155](
在 tools.check 1.1.0 中变更并发布
谢谢!<3
...