It is known that all functional languages share some basic properties like using functions as basic building block for programs with all the consequences like using recursion in
When you say code as data you are referring to a language where the code is represented in a data structure. This is referred to as Homoiconicity and it usually only true for languages that are lisp dialects or something close to it. Haskell, Erlang and Scala are not Homoiconic, Clojure is.
Clojure's fundamental differentiators are:
It has a Software Transactional Memory system, which makes shared state concurrent programming easier
It is a Lisp, unlike Haskell or Erlang, therefore all code is data, which allows you to make what look likes changes to the language itself at runtime through the macro system
It runs on the JVM, which means you have direct access to all Java libraries
Clojure data structures implement Java interfaces such as Collection, List, Map, Runnable and Callable where appropriate. Strings are just Java Strings, Numbers are Java Integers and Doubles. This means Clojure data structures can be passed directly to Java libraries without any bridging or translation