(define (printn x) (%%cexp ('a -> undefined) "dump_object (%0, 0); fprintf (stdout, \"\\n\")" x)) (define (+ a b) (%%cexp (int int -> int) "%0+%1" a b)) (define (z x) (vcase x ((:thing v) (+ v 1)))) ;;; OK. houston, we have a problem. this should fail. (let ((y (:thing #\A))) (printn (z y)) )