Class Clojure

java.lang.Object
clojure.java.api.Clojure

public class Clojure extends Object

The Clojure class provides a minimal interface to bootstrap Clojure access from other JVM languages. It provides:

  1. The ability to use Clojure's namespaces to locate an arbitrary var, returning the var's IFn interface.
  2. 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 plus to read:

 IFn map = Clojure.var("clojure.core", "map");
 IFn inc = Clojure.var("clojure.core", "inc");
 map.invoke(inc, Clojure.read("[1 2 3]"));
  • Method Details

    • var

      public static IFn var(Object qualifiedName)
      Returns the var associated with qualifiedName.
      Parameters:
      qualifiedName - a String or clojure.lang.Symbol
      Returns:
      a clojure.lang.IFn
    • var

      public static IFn var(Object ns, Object name)
      Returns an IFn associated with the namespace and name.
      Parameters:
      ns - a String or clojure.lang.Symbol
      name - a String or clojure.lang.Symbol
      Returns:
      a clojure.lang.IFn
    • read

      public static Object read(String s)
      Read one object from the String s. Reads data in the edn format.
      Parameters:
      s - a String
      Returns:
      an Object, or nil.