(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))
)