Möchte erklären, dass
data (Coord a) => Triangle a = Triangle{t0 :: a, t1 :: a, t2 :: a}
Ich erhalte jedoch
Geometry.hs:15:19:Art-Fehlanpassung Erwartete Art
* -> *', but
p' hat Art*' In the class declaration for
Koord'
wobei Coord definiert ist als
class (Traversable p, Functor p, Foldable p, Applicative p) => Coord p where
getComponents :: Num a => p a -> [a]
getComponents = toList
fromComponents :: Num a => [a] -> p a
magSq :: Num a => p a -> a
magSq = Prelude.sum . map (\x -> x * x) . getComponents
dotProduct :: Num a => p a -> p a -> a
dotProduct a b = Prelude.sum $ zipWith (*) (getComponents a) (getComponents b)
Irgendwelche Ideen?
PS. Der Code ist eine leicht modifizierte Version dessen, was im Data.SG-Paket zu finden ist