[Haskell-cafe] Re: Definition of hidden instance members (bug in GHC or Hugs+Yhc)

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Sat Jul 5 19:14:56 EDT 2008


On 2008 Jul 5, at 19:02, Neil Mitchell wrote:

>> This is either a GHC bug, or a Yhc+Hugs bug - I'm not sure which, but
>> the compilers disagree:
>>
>> import Prelude hiding ((==))
>> data Foo = Foo
>> instance Eq Foo where
>>    (==) a b = True
>
> I was thinking that GHC's behaviour seems more sensible, but the
> following fails:
>
> import qualified Module as M
>
> instance MClass Foo where
>     M.foo = undefined
>
> M. is not allowed as a prefix of a function, which makes resolving
> ambiguities hard unless the compiler solves the issue for you (as Hugs
> and Yhc do)


But this works for me in ghc:

foo.hs:
> import Mod as M
>
> data Bar a = Bar Int a
>
> instance M.MClass (Bar a) where
>   foo _ = M.foozero
>   foozero = Bar 0 (undefined :: a)
>
> main = putStrLn "foo"

Mod.hs:
> module Mod where
>
> class MClass a where
>   foo :: a -> a
>   foozero :: a

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH




More information about the Haskell-Cafe mailing list