Kand
This is experimental project. Don't use it for product. :)
Usage
You can run repl with Leiningen lein run
Kand REPL
To exit type quit
> (def a 10)
#kand.type.Unit{}
> (def b 2000)
#kand.type.Unit{}
> (core/+ a b)
#kand.type.Num{:val 2010}
> (def add (fn (x y) (core/+ x y)))
#kand.type.Unit{}
> (add a b)
#kand.type.Num{:val 2010}
> (if (core/> 1 2) 1 2)
#kand.type.Num{:val 2}
> (if (core/= 1 1) 1 2)
#kand.type.Num{:val 1}
> (if (core/= 1 2) 1 2)
#kand.type.Num{:val 2}
> (core/. (quote nextInt) (core/new (quote java.util.Random)))
#kand.type.Obj{:obj -1034235661}
> :quit
Bye See you soon!
Build
lein ubarjar
java -jar target/kand-0.1.0-SNAPSHOT-standalone.jar
References
JVM Languages
Statically typed lisp implementations
- Lux (clojure)
- Carp (haskell)
- Clojure core/typed (clojure)
- Typed Racket
- Shen
Lisp implementations
- joker (clojure)
- Kawa (java)
- little lisp (javascript)
- How to Write a (Lisp) Interpreter (in Python) (python)
- Lispreter (java)
- haskell-lisp-interpreter (haskell)
- SICP lisp evaluator (clojure)