The Clojure class provides a minimal interface to bootstrap Clojure access
from other JVM languages. It provides:
- The ability to use Clojure's namespaces to locate an arbitrary
var, returning the
var's
IFn interface.
- A convenience method
read for reading data using
Clojure's edn reader
To lookup and call a Clojure function:
IFn plus = Clojure.var("clojure.core", "+");
plus.invoke(1, 2);
Functions in clojure.core are automatically loaded. Other
namespaces can be loaded via require:
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("clojure.set"));
IFns can be passed to higher order functions, e.g. the
example below passes inc to map:
IFn map = Clojure.var("clojure.core", "map");
IFn inc = Clojure.var("clojure.core", "inc");
map.invoke(inc, Clojure.read("[1 2 3]"));