type error when compiling an older Haskell program

Stefan O'Rear stefanor at cox.net
Sat Jul 7 23:17:51 EDT 2007


On Sat, Jul 07, 2007 at 10:53:17PM -0400, Scott Stoller wrote:
> hi,
> 
> thanks to Stefan, I am past the second problem in compiling this program
> (needed to change 'bounds' to 'getBounds').  now I get a more intimidating
> error message...
> 
> I am trying to compile paradox 1.0, an older (GHC 5) Haskell program, with
> GHC 6.6.1.  I get the intimidating error message shown below.  I would
> appreciate any advice about how to fix this.  I am guessing that the
> problem might be a change in the type of some library function.
> 
> best regards,
> scott
> 
> p.s. the file causing the error is in the paradox source code at
> http://www.cs.sunysb.edu/~stoller/out/paradox-1.0-casc.tar.gz

Add {-# OPTIONS_GHC -fno-mono-pat-binds #-}

You are the fourth person to discover monomorphic pattern bindings :)

As an experiment, the GHC team has changed GHC to make pattern bindings
(like MkT m = tm) default to only produce values usable at one type.
The full generality of Haskell-98's rules complicated the
implementation, and the idea was that if sufficiently few people
complained, the next version of Haskell could use simpler rules.  (at
least that's how *I* remember the explanation.)

Another workaround is to do it with an explicit unwrap:

 where m = case tm of MkT m -> m

instead of

 where MkT m = tm

Stefan


More information about the Glasgow-haskell-users mailing list