(datatype uimm (:INT int) (:CHAR char) (:pair int int) ; (:THING int) ) (let ((x (uimm:INT 3))) (vcase uimm x ((:INT n) "gotcha") ((:CHAR ch) "not so much") ((:pair a b) "fuggedaboudit") ))