(datatype list (:nil) (:cons 'a (list 'a)) ) (datatype symbol (:t string)) (define (eq? a b) (%%cexp ('a 'a -> bool) "%0==%1" a b)) (define parse () -> 0 ('expr . _) -> 1 _ -> 2 ) (define (printn x) (%%cexp ('a -> undefined) "dump_object (%0, 0); fprintf (stdout, \"\\n\")" x)) (let ((x '(expr a b c))) (printn x) (parse x))