Is there a macro for Clojure and ClojureScript that would allow you to insert different expressions depending on whether the file is being compiled in Clojure or Clojurescript?
(if-clojurescript
(my clojurescript definition)
(my clojure definition))
Essentially I'm looking for something like the #ifdef SOME_PLATFORM
macros you might see sprinkled around C/C++ code. I think it could be useful for files that I would like to be part of a cross-over, but for which one small part of that file isn't compatible between Clojure/ClojureScript.
This is a new feature from Clojure 1.7 : Reader conditionals.
Also see Daniel Compton blog, for example :
#?(:clj (Clojure expression)
:cljs (ClojureScript expression)
:clr (Clojure CLR expression))
You may also want to look at macrovitch.
you could check *clojure-version*
user> (if *clojure-version* "I'm Clojure" "I'm ClojureScript")
"I'm Clojure"
cljs.user> (if *clojure-version* "I'm Clojure" "I'm ClojureScript")
"I'm ClojureScript"
This could be useful in cases where you can't split the language neutral bits into their own file (which is preferable). My personal opinion tends towards avoiding using too many of such things.
(defmacro if-clojurescript [clj-form cljs-form]
(if *clojure-version* clj-form cljs-form))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With