質問が些細な場合は申し訳ありませんが、グーグルで調べてもどこにも導かれません。defmulti
との一般的な構文は何defmethod
ですか? 単純なマルチメソッドを書くことはできますが、docstring、前後の条件、メタデータなどをどこに置けばよいかわかりません。
実はClojureよりもClojureScriptに興味があるので、両者の違いがあれば教えてください。
質問が些細な場合は申し訳ありませんが、グーグルで調べてもどこにも導かれません。defmulti
との一般的な構文は何defmethod
ですか? 単純なマルチメソッドを書くことはできますが、docstring、前後の条件、メタデータなどをどこに置けばよいかわかりません。
実はClojureよりもClojureScriptに興味があるので、両者の違いがあれば教えてください。
REPL では、関数を使用しdoc
て関数の引数と (ほとんどの場合) オプションの説明を取得できます。ClojureScript に関しては、これら 2 つの関数はマクロです。つまり、コンパイル時に展開され、通常の Clojure とまったく同じように動作する必要があります。つまり、ClojureScript がマクロが生成するコードを処理できる限りです。
user=> (doc defmulti)
-------------------------
clojure.core/defmulti
([name docstring? attr-map? dispatch-fn & options])
Macro
Creates a new multimethod with the associated dispatch function.
The docstring and attribute-map are optional.
Options are key-value pairs and may be one of:
:default the default dispatch value, defaults to :default
:hierarchy the isa? hierarchy to use for dispatching
defaults to the global hierarchy
nil
user=> (doc defmethod)
-------------------------
clojure.core/defmethod
([multifn dispatch-val & fn-tail])
Macro
Creates and installs a new method of multimethod associated with dispatch-value.
nil