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

欢迎!请参阅《关于》页面了解此功能的更多详细信息。

0 投票
语法和读取器

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

为了与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: 应为关键词}。

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

Cljure 已经有了map的读取语法。如果我们支持JSON,我们也会支持ruby map字符串吗?在我看来,这个功能只会增加困惑,因为冒号在关键词中用来,而关键词在map中经常被使用 - 例如,从XML或甚至从JSON反序列化。:)

0 投票

评论者:dnolen

Clojure不再仅仅是运行在JVM上的语言。Clojure同样可以在CLR和JavaScript上运行。特别是ClojureScript目前难以轻松处理JSON字面量——这是一种极其常见(但不无问题)的数据格式。通过允许在映射字面量中使用冒号空格——Clojure数据结构可以有效地成为一种可扩展的JSON超集,提供JSON的简洁性和XML的表现力。

给我点个赞。

0 投票

评论者:timmc

Clojure仅运行在JVM上;ClojureScript运行在JS VMs上。如果这对CLJS有用,那它应该只是一款CLJS特性。

0 投票

评论者:mikera

反对整个想法:这样会陷入疯狂...

如果我们继续添加这样的语法怪异,那么语言将变得难以维护。有许多需要记住的特殊情况和歧义,这反而使得事情更复杂,而不是简单化。

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

0 投票

评论者:laczoka

反对理由同Allan Malloy和Mike Anderson提到的理由

0 投票

评论者:bozhidar

反对重复Ruby中的错误...

0 投票
...