请在2024年Clojure调查!中分享您的想法。

欢迎!请查看关于页面以了解更多关于此如何运作的信息。

0
语法和读取器

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

对于JSON兼容性
没有空格时的已知问题 - x:true 和 y:false

13 答案

0
0

评论由:hiredman

请不要

0

评论由:tavisrudd

Alan Malloy在一个Google Group讨论中提出了一个很好的观点(https://groups.google.com/d/msg/clojure/XvJUzaY1jec/aVpWBicwGhsJ)关于意外的尾随(或悬空)冒号和前导冒号之间的混淆
"这甚至不仅仅是“将它们看作空白”那么简单
因为,假设你可能希望 (read-string "{a: b}")
结果会在得到。但是通过read-string "{a :b}"会导致错误,因为:
(hash-map 'a :b)

可以通过仅将冒号之后的逗号视为空白字符来避免这个问题。由于粘贴JSON似乎是个关键动机,所以逗号无论如何都会存在:{"v":, 1234}是有效的,而{a-key: should-be-a-keyword}则会产生语法错误。

0

评论者:alexbaranosky

在我看来,这样会更让人困惑。

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映射字面量吗?在我看来,这个添加只会增加混乱。

0

评论者:dnolen

Clojure不再只是JVM上的语言。Clojure还托管在CLR和JavaScript上。特别是ClojureScript目前处理JSON字面量很困难——这是一个极其常见但问题严重的数据格式。通过在映射字面量中允许冒号空白字符,Clojure数据结构可以有效地成为可扩展的JSON超集,从而结合了JSON的简洁性和XML的表达力。

我也这么看。

0

评论者:timmc

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

0

评论者:mikera

-1 对这个整个想法表示反对:这会导致疯狂...

如果我们继续添加这样的语法怪癖,那么语言将会变得难以维护。有很多要记住的特殊情况和含糊不清,这与简单恰恰相反。

如果人们想要使用 JSON,那也行,但那时最好的做法是使用特定的 JSON 解析器/写入器,而不是只是粘贴到 Clojure 源代码中。

0

评论者:laczoka

-1 原因同 Allan Malloy 和 Mike Anderson 指出的。

0

评论者:bozhidar

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

0
...