paren

Watch a Lisp expression evaluate, one substitution at a time.

Your expression

What paren understands
Data
numbers, strings, keywords, nil, true and false, 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). def and defn work 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