エルトゥールルCetin:
私は最後に、いくつかのデータと使用インターポーザ操作しました。それはのようないくつかの文字に来るときしかし、それは違った行動〜 `、
予想される行動
(interpose '! ["a" "b" "c"])
=> ("a" ! "b" ! "c")
(interpose 'k ["a" "b" "c"])
=> ("a" k "b" k "c")
(interpose '- ["a" "b" "c"])
=> ("a" - "b" - "c")
期待できない行動(彼らは代わりにデータ結果の関数を返します)
(interpose ', ["a" "b" "c"])
=> #object[clojure.core$interpose$fn__6471 0x6f0c27f3 "clojure.core$interpose$fn__6471@6f0c27f3"]
(interpose '` ["a" "b" "c"])
=> #object[clojure.core$interpose$fn__6471 0x7b94fbcb "clojure.core$interpose$fn__6471@7b94fbcb"]
(interpose '~ ["a" "b" "c"])
=> #object[clojure.core$interpose$fn__6471 0x36966945 "clojure.core$interpose$fn__6471@36966945"]
cfrick:
これらの文字は、すべてのClojureで特別な意味を持っている、あなたは単純に引用符でそれらを入力することはできません。だから彼らは、読者によってその意味で処理された後、あなたの'
引用は、次のフォームに使用されます。これは全ての一アリティバージョン呼び出すコードにつながるinterpose
ので、あなたが結果として表示さ機能が得られ、その後、あなたにトランスデューサを与えるだろう、。
あなたはシンボルとしてこれらの文字を持っているしたい場合は、使用することができますsymbol
。例えば
user=> (interpose (symbol ",") ["a" "b" "c"])
("a" , "b" , "c")
これらの文字の意味は以下のとおりです。
:基本的に、このような予期しない動作のルックスと結果のコード
user=> `(interpose ', ["a" "b" "c"])
(clojure.core/interpose (quote ["a" "b" "c"]))
user=> `(interpose '` ["a" "b" "c"])
(clojure.core/interpose (quote (clojure.core/apply clojure.core/vector (clojure.core/seq (clojure.core/concat (clojure.core/list "a") (clojure.core/list "b") (clojure.core/list "c"))))))
user=> `(interpose '~ ["a" "b" "c"])
(clojure.core/interpose (quote ["a" "b" "c"]))