Frege, a dialect of the Haskell language, is arguably the first pure functional programming language for the JVM. In Frege, functions are first-class citizens and can be passed to other functions; variables are always immutable (the language simply does not supply any assignment statements) and methods created in the language have no side-effects.
Another difference from Clojure is that Frege is a statically typed language while Clojure is dynamically typed. Variables in Frege have a fixed type and the type must be known at compile time. Frege can infer the types, most of the time, from code, though.
Interestingly, the Frege compiler translates the Frege source code to Java and calls the standard JDK javac compiler to translate the generated Java code to Java bytecode.
The Frege website can be found here (at the time of writing this book, it simply redirected to...