#lang plai (require "tvrcfae-t.rkt") (define (list-env ex) (with-type 'numlist 'empty (numTE) 'cons (pairTE (numTE) (idTE 'numlist)) ex)) (define nil (app (id 'empty) (num 0))) (define (conz n l) (app (id 'cons) (pair (num n) l))) (define (extract l) (list-env (cases 'numlist l 'empty 'n (id 'n) 'cons 'p (fst (id 'p))))) (test (interp (extract nil) (mtSub)) (numV 0)) (test (interp (extract (conz 1 nil)) (mtSub)) (numV 1)) %