(module signatures mzscheme
(require (lib "unit.ss"))
(provide (all-defined))
(define-signature type-printer^
(print-type has-name print-effect))
(define-signature infer^
(unify1 fv fv/list unfold))
(define-signature subst^
(subst subst-all))
(define-signature type-equal^
(type-equal? type-compare type<? rename tc-result-equal?))
(define-signature typechecker^
(tc-expr tc-literal type-check tc-exprs tc-expr/t check-expr tc-toplevel-form))
(define-signature tc-if^
(tc/if-onearm tc/if-twoarm))
(define-signature tc-lambda^
(tc/lambda tc/plambda))
(define-signature tc-app^
(tc/apply tc/funapp tc/app))
(define-signature tc-let^
(tc/let-values tc/letrec-values))
)