リーダー ドキュメントから:
キーワードは記号に似ていますが、次の点を除きます。
:fred のように、コロンで開始する必要があります。
「.」を含めることはできません。または名前クラス。
2 つのコロンで始まるキーワードは、現在の名前空間で解決されます
と
シンボルには、繰り返しのない「:」を 1 つ以上含めることができます。
: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