#lang plait (require "support.rkt") (require (typed-in racket/base [gensym : (-> Symbol)])) ; Responsible TA: awagner (define (desugar [expr : LExpr]): LExpr ...) (define (constraint-gen [e : LExpr]) : (Listof Constraint) ...) (define (unify [cs : (Listof Constraint)]) : Substitution ...) (define (type-infer [prog : S-Exp]) : Term ...)