
On Sat, Feb 16, 2008 at 04:53:24PM +0100, Johannes Waldmann wrote:
Hello.
Here is one ghci feature that I find mildly annoying:
If ghci (re-)reads a module that contains some error, then it considers the module loading as a complete failure, and at the prompt I get the Prelude environment.
I'd like to have at least the import statements executed, and possibly the declarations that were error-free. That would help me in interactively debugging the erraneous part of the module. (Often the error is some type error, related to some imported entity; but when my module contains the error, then the imports are gone.)
Perhaps I'm doing something wrong, then please educate me; or perhaps there's an easy way to implement partial reading and typechecking. (It'd be enough to have this for the "current" module, of course.)
Thanks - Johannes Waldmann.
This is fairly easy for type errors - just have the 'type of expression' function return errors using Either etc, and at the top level drop all expressions with error type. As for parse errors - good luck. Haskell is incredibly difficult to parse even if you ignore several of its less-friendly features. If you allow them... for a long time I said it had never even been proven possible, but then I found a workable algorithm exponential in the file size. Now, how do you propose handling parse errors? Here's an example of why it's hardly trivial: foo = x + y + z where { x = 2; y = 3; z = 4; } Stefan