Я пытаюсь создать свой собственный тип данных в Haskell.
У меня есть следующие типы данных:
type Length = Integer
type Rotation = Integer
data Colour = Colour { red, green, blue, alpha :: Int }
deriving (Show, Eq)
Я пытаюсь создать собственный тип данных, который может бытьлюбой из указанных выше типов данных.У меня есть следующее:
data Special
= L Length
| R Rotation
| Col Colour
deriving (Show, Eq)
Однако я хотел бы иметь возможность извлечь значения Length
, Rotation
и Colour
, если у меня есть экземпляр типа данных Special
.
Если бы у меня было:
L length
Был бы length
здесь типа Special
или типа Length
?Если length
имеет тип Special
, есть ли способ извлечь его, чтобы он имел тип Length
?
Например, допустим ли следующий код?
takeL (x:xs)
| x == (L length) = length
Любойпонимание приветствуется.