When updating a version of a module, I failed to update all of the
import lists that made reference to that module.  This is the
compilation error that resulted:

ERROR "FooMain.hs" (line 9): Type error in application
*** expression     : f x
*** term           : x
*** type           : Foo
*** does not match : Foo

Well, Foo does not match Foo, how about that ;-)


The message _could_ be, if anyone took any time to do this:

*** expression     : f x
*** term           : x
*** type           : Foo1.Foo
*** does not match : Foo

i.e. print the qualified type if it appears ambiguous (but is it
really worth the hassle?  Probably not).


----------------------------------------

module FooMain where

import Foo2
import FooTests

f :: Foo -> Bool
f (Foo x) = x

test = f x

----------------------------------------

module Foo2 where
data Foo = Foo Bool deriving Show

----------------------------------------

module FooTests where

import Foo1 -- this is the error

x = Foo 6

----------------------------------------

module Foo1 where
data Foo = Foo Int deriving Show

===============================================================================
Fabrice Lavier          <[EMAIL PROTECTED]>         (514) 345 1644, ext. 317
===============================================================================

Reply via email to