2024年Clojure状态调查! 中分享您的想法。

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

0
语法和阅读器

原标题为 '将冒号视为空白',这不是一个问题描述,而是一个(有缺陷的)实现方法

为了与JSON兼容
没有空格时的已知问题 - x:true 和 y:false

13 个答案

0
0

评论者:hiredman

请不要

0

评论者:tavisrudd

Alan Malloy 在谷歌群组讨论 (https://groups.google.com/d/msg/clojure/XvJUzaY1jec/aVpWBicwGhsJ) 中提出了一个关于尾随(或浮动)冒号和前导冒号之间意外混淆的良好观点
"它甚至不简单到“让它们是空白”
,因为显然你想 (read-string "{a: b}"),请输入:
结果为 (hash-map 'a 'b),但 (read-string "{a :b}") 的结果为
("hash-map 'a :b")."

通过仅将冒号视为逗号后的空格,可以避免这个问题。由于 json 的贴切入法似乎是关键动机,逗号无论如何都会存在:有效的 {"v":, 1234} 与语法错误 {a-key: should-be-a-keyword}。

0

评论者:alexbarnosky

我认为这可能会引起视觉上的混淆。

0

评论者:laurentpetit

请,求您,不要这样。

0

评论者:tavisrudd

啊,我犯了一个错误。我打字太快了,把逗号放错了位置。在我脑海中,我意思是冒号之后的形式需要有逗号。因此,{"a-json-key": 1234, ...} 是有效的,而 {"a-json-key": was-supposed-to-be-a-keyword "another-json-key" foo} 会抱怨冒号是无效的标记。我不认为需要它。

0

评论者:solussd

Clojure 已经有映射的读取器语法。如果我们支持 JSON,我们也支持 ruby 映射字面量吗?在我看来,这个添加只会增加混淆 - 冒号在关键字中已经使用,而关键字在映射中经常使用 - 例如,从 XML 或 JSON 反序列化时。:)

0

评论者:dnolen

Clojure 已不再是仅托管在 JVM 上的语言。Clojure 还可以在 CLR 和 JavaScript 上托管。特别是 ClojureScript 目前难以轻松处理 JSON 字面量 - 这是一个非常常见(尽管有问题)的数据格式。通过允许在映射字面量中使用冒号空格,Clojure 数据结构可以有效地成为可扩展的 JSON 子集 - 结合了 JSON 的简洁性和 XML 的表达性。

我也支持。

0
by

由: timmc 发表评论

Clojure 仅托管在 JVM 上;ClojureScript 托管在 JS VM 上。如果这对 CLJS 有用,它应该只是一个 CLJS 功能。

0
by

由: mikera 发表评论

-1 对于整个想法:这样会导致疯狂...

如果我们继续添加这样的语法怪异之处,那么语言将变得难以维护。有太多你必须记住的特殊情况和歧义,这与简单完全相反。

如果人们想使用 JSON,那也无可厚非,但那时最好的方法是使用特定的 JSON 解析器/写入器,而不仅仅是将其粘贴到 Clojure 源代码中并期望它能够工作。

0
by

由: laczoka 发表评论

-1 原因是 Allan Malloy 和 Mike Anderson 提到的

0
by

由: bozhidar 发表评论

-1 不要重复 Ruby 中的错误...

0
by
参考: https://clojure.atlassian.net/browse/CLJ-899 (由 stu 报告)
...