请在 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
谢谢!那次对话阐明了好多。
0

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

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

关于 test.check,这对您来说是个问题吗?我对此并没有太多的看法,但如果它给人们带来麻烦,似乎有理由不生成这些。

对,我在进行跨平台代码的属性测试时遇到了这个问题,具体是因为 ClojureScript 的不同行为。
我同意重新打开此问题。
我在 [TCHECK-155](https://clojure.atlassian.net/browse/TCHECK-155) 上发表了评论,但我感觉没有正式重新打开它的立场。
在 tools.check 1.1.0 中修改并发布
谢谢! <3
...