Hi all,

I am pretty new to haskell, but while exploring the haskell module system, I came along some questions. As far as I found out, haskell supports separated namespaces, i.e. every module has its own symbol space. Thus, when defining a class in one module like

module A(Foo(f)) where

class Foo a where
 f ::  a -> Integer

one should be able to define two instances having the same signature, as long as they are in different namespaces

module B(bar) where
import A(Foo(f))

instance Foo Integer where
 f x = x

bar x = f x

module C(tango)
import A(Foo(f))

instance Foo Integer where
 f x = x + 1

tango x = f x

As the integer instances of Foo are in separate modules and thus namespaces, one should be able to just import bar and tango

module Main(main)
import B(bar)
import C(tango)

main = print( (bar 5) + (tango 4) )

But now, ghc complains about two instances of Foo Integer, although there should be none in the namespace main.
I have not found any documentation on why ghc behaves like this and whether this conforms to the haskell language specification.
Is there any haskell compiler out there that is able to compile the above example?


Thanks for your help
Stephan
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to