(define impc:ti:run-type-check
(lambda (vars forced-types ast)
;; (println '====================================)
;; (println 'run-type-check 'ast: ast)
;; (println 'forced-types forced-types)
;; (println 'vars: vars)
(let ((typelist (call/cc (lambda (k) (set! *type-check-continuation* k) '()))))
(if (null? typelist)
(set! typelist (impc:ti:run-type-check* vars forced-types ast)))
;; (println 'unified 'types: typelist)
typelist)))