; a pattern match with bindings
(let ([sum (assoc (car pattern) (cdr (assoc switch-type dls)))])
(unless sum (error #f "can't pattern match ~a with ~a" switch-type pattern))
(let* ([names (cdr pattern)]
[types (cdr sum)]
[new-env (fold-left env-insert env names types)])
; a pattern match with bindings
(let ([sum (assoc (car pattern) (cdr (assoc switch-type dls)))])
(unless sum (error #f "can't pattern match ~a with ~a" switch-type pattern))
(let* ([names (cdr pattern)]
[types (cdr sum)]
[new-env (fold-left env-insert env names types)])