You can of course create Clojure/lisp code that would generate kernel code, but I am strongly against it as the default option, since I find plain C much better suited to small kernels close to hardware (which are only a small proportion of the overall code) than either lisp or Julia.
Please note that there is no need for out-of process compilation step. You compile this by calling a Clojure function, interactively from the REPL.