Hm.
鳥> (read "(push [1] 'Z)")
;;=> [ "'push", [ "'list", 1 ], [ "'quote", "'Z" ] ]
鳥> (eval (read "(push [1] 'Z)"))
;;=> [ "'Z", 1 ]
...shouldn't the last line be either ;;=> [ 'Z, 1 ]
or ;;=> [ [ "quote", "'Z" ], 1 ]
?