[Haskell-cafe] difference "cabal configure" and "runghc Setup.lhs configure"

andy morris andy at adradh.org.uk
Thu Oct 8 16:22:15 EDT 2009

2009/10/8 Andrew U. Frank <frank at geoinfo.tuwien.ac.at>:
> i have a strange error, which does not occur when i run
> runghc Setup.lhs configure
> but when i use cabal configure and then build, it occurs.
> the error is
> Type constructor Control.Exception.Exception used as a class
> in the instance declaration.
> (i have imported qualified Control.Exception)
> two questions:
> 1. Exception is a class (in Control.Exception) - why the error?
> 2. why is there a difference between runghc and cabal (using the same cabal
> file).
> i attach the cabal file and the two configuratin files produced.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

C.E.Exception used to be a type instead of a class, so you need to
have `base == 4.*` instead of `base -any`. Alternatively, use the
extensible-extensions package instead.

The difference in results you found is because cabal-install uses
base-3 if you don't specify otherwise. The reason for this is that a
lot of packages use `base -any` when they shouldn't: base-4 brought
enough incompatible changes (like making Exception a class) that they
don't work with it. (This is also, I assume, why GHC has two built-in
versions of base in the first place.)

More information about the Haskell-Cafe mailing list