Can you give the example that breaks car/cdr? They seem to be evaluating their args here:
fst $ repl "(car (cons 1 (quote ())))"
Number 1 fst $ repl "(car (cons 1 (quote ())))"
Number 1