(datatype list
(:nil)
(:cons 'a (list 'a))
;; because of the hard-coded TC_PAIR tags, users can't do this any more
;; (:blurt 'a)
)
(define (printn x)
(%%cexp ('a -> undefined) "dump_object (%0, 0); fprintf (stdout, \"\\n\")" x))
(define (error x)
(printn x)
(%%cexp (-> 'a) "goto Lreturn")
(%%cexp (-> 'a) "PXLL_UNDEFINED")
)
(define (thing x)
(vcase list x
((:cons hd tl) hd)
(else (error "empty list?"))))
(thing '(1 2 3))