Search code examples
clojuremacrosclojurescriptreader-macro

Is there an if-clojurescript macro?


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.


Solution

  • 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.