
On Sat, Feb 16, 2008 at 06:58:29PM +0100, Johannes Waldmann wrote:
Sure.
Syntax errors are usually easy to spot and fix (for the programmer who uses some reasonable code layout); the motivation for my proposal was type errors.
I think it would be perfectly acceptable if ghci rejects modules with parse errors (as it does now) but handles modules with type errors more gracefully.
Since type checking a group of declarations (= a module) often considers all declarations at the same time, there may be no sensible way to proceed after a type error.
Then it would even be OK to not bind any of the identifiers of the module, as long as the import declarations are available at ghci prompt. (This would still be an improvement over the present situation.)
Implementing Haskell polymorphism requires that the functions be sorted into dependancy groups, so that undepended definitions can be generalized. Example: foo x = 2 bar = foo 'a' + foo True If this were typechecked all at once (using the standard Damas-Milner algorithm) you would get a "cannot match Bool to Char" type error. Stefan