Ich habe Clojurescript erfolgreich importiert Makros aus anderen Namespaces. Aber ich frage mich, ob mit clojure 1.7 eine Single-File-Konstruktion möglich ist/sollte, so dass ein Makro definiert und verwendet werden kann. Was ich versucht habe funktioniert nicht, aber vielleicht habe ich irgendwo ein Detail übersehen.können Cljc Single-File-Makrodefinitionen mit Clojurescript arbeiten?
(ns cljc.core)
#?(:cljs
(enable-console-print!))
#?(:clj
(defmacro list-macro [x y]
`(list ~x ~y)))
(defn foo [a]
(println (list-macro a a)))
(foo :a)
Diese Form nicht mit list-macro
nicht definiert wird, wenn cljs kompilieren; Wenn ich den clj-Wächter um list-macro entferne, dann ist defmacro innerhalb der cljs-Kompilierung nicht definiert. Gibt es einen Weg?
Nein. ClojureScript Makros sind immer noch Clojure. Sie machen ihre Arbeit kompilieren Zeit - wenn ClojureScript-Code zu JavaScript kompiliert wird. Daher müssen sie zuerst kompiliert werden (von Clojure zu JVM), bevor irgendeine ClojureScript-Kompilierung stattfindet. – muhuk