Я пытаюсь определить класс «Полигон» и подтипы «Треугольник» и «Квадрат». Они должны реализовать функцию площади Polygon.
Так что я попытался создать экземпляр Polygon, но это не работает.
class Polygon a where
area :: a -> Float
data Triangle = MkTriangle {
tP1 :: Point,
tP2 :: Point,
tP3 :: Point}
deriving(Show)
data Quad = MkQuad{
qP1 :: Point,
qP2 :: Point,
qP3 :: Point,
qP4 :: Point}
deriving(Show)
instance Polygon Triangle where
area triangle = 5.0
Обратите внимание, что area triangle = 5.0
это просто отладка ине настоящая функция. Пытаясь скомпилировать это, я получаю следующую ошибку:
`area' is not a (visible) method of class `Polygon'
|
57 | area triangle = 5
| ^^^^
Failed, no modules loaded.
Можете ли вы дать мне подсказку, чтобы это исправить? Спасибо!