Pytanie od nooba.
Mam sobie typ:
data Wielomian = Wielomian [Double]
deriving (Show, Eq)
I funkcję dodającą:
dodajWielomiany :: Wielomian -> Wielomian -> Wielomian
Chciałbym przeładować operator dodawania, aby operować tym typem w bardziej naturalny sposób. Próbowałem tak:
(+) :: Wielomian -> Wielomian -> Wielomian
w1 + w2 = dodajWielomiany w1 w2
Ale wtedy dostaję błąd:
Wielomiany.hs:16:42:
Ambiguous occurrence `+'
It could refer to either `Wielomiany.+',
defined at Wielomiany.hs:38:4
or `Prelude.+',
imported from `Prelude' at Wielomiany.hs:1:8-17
(and originally defined in `GHC.Num')
Rozumiem, że w ten sposób przykryłem standardowe działanie operatora.
Znalazłem inny sposób:
instance Num Wielomian where
(+) v1 v2 = dodajWielomiany v1 v2
Nie za bardzo rozumiem tą konstrukcję, ale dostaję błąd mówiący, że również powinienem przedefiniować *, abs, signum, fromInteger.
Czy nie da się dla jakiegoś typu zdefiniować pojedynczego operatora?
Korzystam z GHC.