Я работаю с алгебраическими типами в Haskell, выполняя некоторые упражнения из рабочего листа.Я получил следующие упражнения:
- Определить алгебраический тип Point для представления (координат) точек в двумерном пространстве.
Мой код для этого упражнения:
data Point = Point Float Float
deriving (Show)
Используя Point, определите измененную версию PositionedShape типа данных Shape, которая включает в себя центральную точку фигуры, в дополнение к ее измерениям.
Ранее определенные данные формы:
data Shape = Circle Float |
Rectangle Float Float
deriving (Show)
Мой код для этого упражнения:
data PositionedShape = PositionedShape Shape Point
deriving (Show)
Теперь у меня возникает вопрос:
Определить функцию:
haskell move :: PositionedShape -> Float -> Float -> PositionedShape
, которая перемещает фигуру на заданные расстояния x и y
Myреализация для этого была следующей:
move :: PositionedShape -> Float -> Float -> PositionedShape
move (Shape (Point x y)) newX newY = Shape (Point newX newY)
Это возвращает мне эту ошибку:
Week8.hs: 103: 7: ошибка: Не в области: конструктор данных 'Shape' Сбой, загруженные модули: нет.
Может кто-нибудь объяснить, почему эта ошибка и как я могу ее исправить?Я немного путаюсь с алгебраическими типами, я много чего пробовал, но кажется, что не могу найти решение.