- (define (constructor-type t ctr)
- (fold-left (lambda (acc x) `(abs ,x ,acc)) t (cdr ctr)))
- (define (constructors data-def)
- (let ([type-name (cadr data-def)]
- [ctrs (cddr data-def)])
- (fold-left (lambda (acc ctr)
- (cons (cons (car ctr) (constructor-type type-name ctr))
- acc))
- '()
- ctrs)))
- (let ([init-env (flat-map constructors (program-datas prog))])