Я новичок в Haskell и пытаюсь понять синтаксис. У меня есть тип данных Vec
, и он реализует Show
, Floating
и Foldable
. Но синтаксис для Foldable
отличается, почему?
data Vec a = Vec [a]
instance Show a => Show (Vec a) where
show (Vec x) = show x
instance Floating a => Floating (Vec a) where
pi = Vec (repeat pi)
exp (Vec x) = Vec (map exp x)
log (Vec x) = Vec (map log x)
sin (Vec x) = Vec (map sin x)
cos (Vec x) = Vec (map cos x)
instance Foldable Vec where
foldr f x (Vec y) = foldr f x y