Most simply, jank is a Clojure dialect on LLVM with C++ interop. Less simply, jank is a general-purpose programming language which embraces the interactive, functional, value-oriented nature of Clojure and the desire for the native runtime and performance of C++. jank aims to be strongly compatible with Clojure. While Clojure's default host is the JVM and its interop is with Java, jank's host is LLVM and its interop is with C++.
jank is currently in alpha! Look here for details.
Read the jank book.
; Comments begin with a ; (println "meow") ; => nil ; All built-in data structures are persistent and immutable. (def george {:name "George Clooney"}) ; => #'user/george ; Though all data is immutable by default, side effects are adhoc. (defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true)) ; Doesn't change george. (say-hi george) ; => {:name "George Clooney" ; :greeted? true} ; Many core functions for working with immutable data. (apply + (distinct [12 8 12 16 8 6])) ; => 42 ; Interop with C++ can happen *seamlessly*. (defn sleep [ms] (let [duration (cpp/std.chrono.milliseconds ms)] (cpp/std.this_thread.sleep_for duration)))
If you'd like your name, company, or logo here, you can sponsor this project for at least $25/m.