私には機能があります
(defn hi [a] '[a 2])
値 a を取り、その値を引用符で囲まれたベクトルに挿入し、ベクトルを返す必要があります。
したがって、呼び出し(hi :abc)
は を返す必要があり[:abc 2]
ます。
注意すべき重要なことは、内部ベクトルが引用符で囲まれていることです。
どうすればいいですか?
私には機能があります
(defn hi [a] '[a 2])
値 a を取り、その値を引用符で囲まれたベクトルに挿入し、ベクトルを返す必要があります。
したがって、呼び出し(hi :abc)
は を返す必要があり[:abc 2]
ます。
注意すべき重要なことは、内部ベクトルが引用符で囲まれていることです。
どうすればいいですか?
これは次のことに役立ちます。
user=> (defn hi [a] [a '2])
#'user/hi
user=> (hi :abc)
[:abc 2]
私があなたを正しく理解していれば、未定義のシンボルを関数に渡し、そのシンボルを含むベクトルを取得できるようにしたいと考えています (他のものが追加されています)。
関数に渡す前にシンボルを引用すると、関数内で特別なことをする必要はありません。
user=> (defn hi [a] [a 2])
user=> (= (hi '?ab) '[?ab 2])
true
シンボルをクォートしたくない場合 (たとえば、データ型クエリ構造の慣用的なオーサリングを有効にするために DSL を作成している場合) は、マクロを使用する必要があります。名前空間。次のようなものを試すことができます:
user=> (defmacro hi2 [a] `(quote [~a 2]))
user=> (= (hi2 ?ab) '[?ab 2])
true