Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to compile clojure source without going into REPL?

Tags:

clojure

Is it possible to compile clojure source without going into REPL? If a big project is there then it is not possible to compile each program manually & then make jar file of it, like if i wish to compile and get class files by some set of instructions in make software?

like image 601
vikbehal Avatar asked Dec 07 '22 18:12

vikbehal


1 Answers

For the sake of understanding how many of these systems work underneath, here is some bare minimum code to compile code without a repl.

Say you have some class generating code:

hello.clj:

 (ns hello
   (:gen-class
    :methods [[sayHi [] String]]))

 (defn -sayHi [this]
   (println "hello world"))

You can build your "makefile" out of clojure code

compile.clj:

 (set! *compile-path* "./")
 (compile 'hello)

Then you just call your code as a script.

 $ java -cp ~/dj/lib/clojure.jar:./ clojure.main compile.clj 
 $ ls
 compile.clj  hello.clj          hello$loading__4505__auto__.class
 hello.class  hello__init.class  hello$_sayHi.class

Now your code is compiled and you can access it like any other class file:

 $ java -cp ~/dj/lib/clojure.jar:./ clojure.main
 Clojure 1.3.0
 user=> (import 'hello)
 hello
 user=> (.sayHi (hello.))
 "hello world"
 user=> 
like image 125
bmillare Avatar answered Dec 09 '22 07:12

bmillare