;;; $Id: type-check-to-do.txt,v 1.16 1999/06/23 16:57:22 leavens Exp $ The type checker is unsound and restrictive; for example, we allow mutable polymorphic storage, which is unsound. - The coding of environments should use a hash table, as what is currently done is too slow. - If someone defines a procedure that calls load, we'll miss the load. Perhaps what we should do is to call type-checking from within an overload of the load procedure. - The code should be rewritten to consistently data abstractions for: scheme expressions - Need to handle (begin (define ...) ...) syntax in nested contexts - Should have line numbers printed out in error messages... - If there's a missing right parentheses, even in the .def file, the system hangs waiting for it... - No handling of macros (define-syntax, etc.) - The treatment of variable argument type procedures is incomplete and somewhat unsound. - Mutual recursion across load trees is not handled correctly. Defined varrefs should be letrec bound before processing loads and then bodies of defines should be type checked after the loads. Also deftypes can be handled first. - Deftypes in scheme files don't work, because Scheme itself can't handle deftype; this could be fixed by making deftype a macro that simply ignores its arguments.