ghci feature request: partially read modules

Stefan O'Rear stefanor at
Sat Feb 16 12:12:24 EST 2008

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;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url :

More information about the Glasgow-haskell-users mailing list