Clojureマクロを学習中ですが、このマクロでmacroexpand-1を使用しようとすると、NullPointerExceptionが発生します。
(def config {:ns 'bulbs.neo4jserver.client,
:root-uri "http://localhost:7474/db/data/"})
(def data {:name "James"})
(defmacro create
[config data]
`(~(ns-resolve (:ns config) 'create-vertex) config data))
(macroexpand-1 '(create config data))
これをコンパイルしようとすると、次の結果が返されます。
Unknown location:
error: java.lang.NullPointerException
Compilation failed.
しかし、マクロの本体を評価する...
`(~(ns-resolve (:ns config) 'create-vertex) config data)
...これを返します...
(#'bulbs.neo4jserver.client/create-vertex bulbs.vertices/config bulbs.vertices/data)
...それが私が欲しいと思うものです。
更新:手動で置き換える(:ns config)
と'bulbs.neo4jserver.client
、エラーはなくなります-どうすれば(:ns config)
プレイを上手くできますか?