Hi!

Can somebody explain to me why ghc/hugs fails to compile the following Haskell program? As long as MyInt is not an instance of Num the compilations should succed... but it don't. :-( Why?

$ cat multi.hs
data MyInt = MyInt Int deriving Show

class Op_plus a b where
    plus :: a -> b -> Int

instance Op_plus MyInt MyInt where
    (MyInt a) `plus` (MyInt b) = a + b

instance (Num a) => Op_plus a MyInt where
    i `plus` (MyInt b) = i + b

instance (Num a) => Op_plus MyInt a where
    (MyInt b) `plus` i = i + b

$ ghci                                          \
        -fglasgow-exts                          \
        -fallow-overlapping-instances           \
        -fallow-undecidable-instances multi.hs

   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |   GHC Interactive, version 5.04.2, for Haskell 98.
/ /_\\/ __  / /___| |   http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|   Type :? for help.

Loading package base ... linking ... done.
Loading package haskell98 ... linking ... done.
Compiling Main             ( multi.hs, interpreted )

multi.hs:1: Warning: No 'main' defined in module Main

Overlapping instance declarations:
  multi.hs:9: Op_plus a MyInt
  multi.hs:12: Op_plus MyInt a
Failed, modules loaded: none.
Prelude>

Thanks and regards,
Razvan ME


_______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell

Reply via email to