- (cond ((eq? a b) '())
- ((or (tvar? a) (tvar? b)) (~ a b))
- ((and (abs? a) (abs? b))
- (let* [(arg-cs (unify (cadr a) (cadr b)))
- (body-cs (unify (substitute arg-cs (caddr a))
+ (cond [(eq? a b) '()]
+ [(or (tvar? a) (tvar? b)) (list (list a b))]
+ [(and (abs? a) (abs? b))
+ (let* [(arg-cs (unify? (cadr a) (cadr b)))
+ (body-cs (unify? (substitute arg-cs (caddr a))