Clojure is notorious for producing near-incomprehensible error messages.
You are trying to perform a first or rest operation on something that is not a cons.
user=> (first 'foo) Execution error (IllegalArgumentException) at user/eval217 (REPL:1). Don't know how to create ISeq from: clojure.lang.Symbol user=> (first 3) Execution error (IllegalArgumentException) at user/eval1 (REPL:1). Don't know how to create ISeq from: java.lang.Long user=> (first 3.14) Execution error (IllegalArgumentException) at user/eval3 (REPL:1). Don't know how to create ISeq from: java.lang.Double user=> (rest 'foo) Execution error (IllegalArgumentException) at user/eval219 (REPL:1). Don't know how to create ISeq from: clojure.lang.Symbol
You have too many parentheses: (list ((+ 2 3)) (* 3 7)) instead of (list (+ 2 3) (* 3 7)) .