by danb » Wed Dec 31, 2008 9:46 pm
The difference is that there are two evaluations in (eval '(a b)). When you type (eval '(a b)) into the repl, the call to READ in the repl turns the string '(a b) into the form (quote (a b)), and the call to EVAL (still in the repl) evaluates the quote form and returns the list (a b). Now your explicit call to EVAL is trying to call A as a function. When you type '(a b) into the repl, there's only one call to EVAL (the one in the repl).