dominic.j.steinitz@britishairways.com writes
On holiday, I started reading about Gaussian integers (as you do) and I thought this should be a piece of cake for Haskell. I get the following error in Hugs: [..]
data Integral a => Gaussian a = Gaussian a a deriving (Eq, Show)
instance Num (Gaussian a) where Gaussian a b - Gaussian a' b' = Gaussian (a-a') (b-b') Gaussian a b + Gaussian a' b' = Gaussian (a+a') (b+b') Gaussian a b * Gaussian a' b' = Gaussian (a*a' - b*b') (a*b' + b*a') negate (Gaussian a b) = Gaussian (negate a) (negate b) fromInteger a = Gaussian (fromIntegral a) 0
To my mind, it is not good to set `Integral a =>' to data declaration. It is better to set such things in the instance declarations. Try, say data Gaussian a = Gau a a deriving (Eq, Show) instance Integral a => Num (Gaussian a) where Gau a b - Gau a' b' = Gau (a-a') (b-b') ... ------------------------------------------------- scico:~/t> ghci M.hs ... GHC Interactive, version 5.02.2, for Haskell 98. ... M> Gau 1 1 * Gau 1 (-1) Gau 2 0 ----------------- Serge Mechveliani mechvel@botik.ru
participants (1)
-
S.D.Mechveliani