ここで説明されている clojure の require 構文を理解する (したがって覚える) のに苦労しています: http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require。それは直観に反し、不均一に見えます。
たとえば、次の例では、このベクトルを引用符で囲む必要がある理由を示しています。
(require '[clj-json.core :as json])
通常、clojure ではベクトルは引用されないため、直観に反します (リストは引用され、ベクトルはデータとして扱われます)。
この場合、ベクトルが引用されていないため、不均一です。
(ns xxx
(:require [clj-json.core :as json]))
:require
require 関数とns マクロ内での使用法は視覚的に似ているだけであることに気付きましたが、それでもなおです。
他にも奇妙な点があります。たとえば、次のことができます。
(require '(clj-json.core))
しかし、私はこれを行うことはできません:
(require '(clj-json.core :as json))
誰かがこれらの質問に答えることができます:
- 最初の例では、なぜベクトルを引用する必要があるのですか?
- ns マクロで引用する必要がないのはなぜですか?
- リスト表記が許可されないのはなぜ
:as
ですか?
物事がそのままになっているのには理由があるのか 、それとも設計時に矛盾に気付かなかっただけなのか疑問に思っています。