Your expression
What paren understands
- Data
- numbers, strings, keywords,
nil,trueandfalse, vectors, maps, and quoted lists such as'(1 2 3) - Forms
def defn fn let if cond do and or quote, and short functions such as#(* % 2).defanddefnwork at the top level only.- Functions
- Not yet
- macros, lazy sequences, destructuring,
loop/recur, sets, multi-arity functions, atoms, printing and Java/JavaScript interop
Arguments are evaluated left to right, then the function is looked up and applied. map, filter and reduce are eager here, so each call they make shows as a step (Clojure’s own map and filter are lazy). Numbers are JavaScript numbers, as in ClojureScript, so (/ 1 3) is 0.333….
Evaluation