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

欢迎!请参阅关于页面了解有关该服务的一些更多信息。

0
语法和读取器

原始标题是'treat colons as whitespace',这不是问题描述,而是一种(有缺陷的)实现方法

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

13 答案

0
0

评论者:hiredman

请不要

0

评论者:tavisrudd

Alan Malloy在Google群组讨论(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: 应该是-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 地图字面量吗?在我看来,这个新增的特性只会让人更迷茫,因为冒号在关键词中也被使用,而关键词在地图中频繁使用——例如,反序列化 XML 或 JSON 时。:)

0

评论者:dnolen

Clojure 不再只是运行在 JVM 上的语言了。Clojure 还可以在 CLR 和 JavaScript 上运行。特别是 ClojureScript 目前无法轻松处理 JSON 字面量——这是一个极其常见但又麻烦的数据格式。通过允许在地图字面量中使用冒号空格,Clojure 数据结构可以有效地成为一个可扩展的 JSON 超集——结合了 JSON 的简洁性和 XML 的表现力。

我也赞同。

0

评论者:timmc

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

0

由 mikera发表的评论:

-1 整个想法都是错误的:这样会导致疯狂...

如果我们继续添加这样的语法怪癖,那么语言将会变得无法维护地复杂。有太多需要记住的特例和模糊性,这完全是简单性的反义词。

如果人们想使用JSON,那是可以接受的,但最好的做法是使用特定的JSON解析器/编写器,而不是简单地将其粘贴到Clojure源代码中,并期望它能够工作。

0

由 laczoka发表的评论:

-1 和 Allan Malloy 以及 Mike Anderson提到的理由相同

0

由 bozhidar发表的评论:

-1 不要重蹈Ruby的覆辙...

0
...