【发布时间】:2015-08-30 17:40:25
【问题描述】:
来自reader docs:
关键字就像符号,除了:
它们可以而且必须以冒号开头,例如:弗雷德。
它们不能包含 '.'或命名类。
以两个冒号开头的关键字在当前命名空间中解析
和
一个符号可以包含一个或多个不重复的':'。
所以看起来文档应该明确允许 :my:keyword 作为关键字。
这适用于我的 REPL:
user=> {:my:keyword 1}
{:my:keyword 1}
这很有效:
user=> {:mykeyword
#_=> 1}
{:mykeyword 1}
即使这样也有效
=> (clojure.edn/read-string (pr-str {:my:keyword 1}))
{:my:keyword 1}
但这不是:
user=> {
#_=> :my:keyword
RuntimeException EOF while reading, starting at line 1
clojure.lang.Util.runtimeException (Util.java:221)
我不能在包含冒号的关键字后面紧跟散列图文字的中间添加换行符。
我可以对其他关键字执行此操作。这工作正常。
user=> {
#_=> :one
#_=> 1
#_=> }
{:one 1}
为什么?这只是读者的怪癖吗? AFAICT :my:keyword 是语法上有效的关键字。我应该担心其他不一致吗?
我正在使用
REPL-y 0.3.5,
nREPL 0.2.6
Clojure 1.6.0
【问题讨论】:
-
可能有助于了解 your repl 有什么。适用于例如
java -cp clojure-1.7.0-RC1.jar clojure.main。我用 lein repl (1.6) 得到同样的错误
标签: clojure clojure-repl