導入
定番の
user=> (defn hello [name] (str "Hello, " name))
#'user/hello
user=> (hello "kzfm")
"Hello, kzfm"
user=> (hello "clojure")
"Hello, clojure"
user=> (str *1 " and " *2)
"Hello, clojure and Hello, kzfm"
エラーが出たときにstacktrace
user=> (/ 1 0)
java.lang.ArithmeticException: Divide by zero (NO_SOURCE_FILE:0)
user=> (.printStackTrace *e)
java.lang.ArithmeticException: Divide by zero (NO_SOURCE_FILE:0)
at clojure.lang.Compiler.eval(Compiler.java:4543)
at clojure.core$eval__3990.invoke(core.clj:1728)
at clojure.main$repl__5813$read_eval_print__5825.invoke(main.clj:176)
at clojure.main$repl__5813.doInvoke(main.clj:193)
at clojure.lang.RestFn.invoke(RestFn.java:426)
at clojure.main$repl_opt__5853.invoke(main.clj:247)
at clojure.main$legacy_repl__5878.invoke(main.clj:288)
at clojure.lang.Var.invoke(Var.java:346)
at clojure.main.legacy_repl(main.java:29)
at clojure.lang.Repl.main(Repl.java:20)
Caused by: java.lang.ArithmeticException: Divide by zero
at clojure.lang.Numbers.divide(Numbers.java:138)
at user$eval__16.invoke(NO_SOURCE_FILE:6)
at clojure.lang.Compiler.eval(Compiler.java:4532)
... 9 more
nil
requireでなくてuseを使うのはpythonでいうimport some_moduleでなくて from some_module import * をしている感じ
lancetっていうビルドシステムも用意されている(RubyのRakeみたいなもの?)