52700.fb2
instance Num a => Monoid (Prod a) where
mempty
= Prod 1
mappend (Prod a) (Prod b) = Prod (a * b)
Записи
Вторая новинка заключалась в фигурных скобках. С помощью фигурных скобок в Haskell обозначаются
записи (records). Запись это произведение типа, но с выделенными именами для полей.
Например мы можем сделать тип для описания паспорта:
data Passport
= Person {
surname
:: String,
-- Фамилия
givenName
:: String,
-- Имя
nationality
:: String,
-- Национальность
dateOfBirth
:: Date,
-- Дата рождения
sex
:: Bool,
-- Пол
placeOfBirth
:: String,
-- Место рождения
authority
:: String,
-- Место выдачи документа
dateOfIssue
:: Date,
-- Дата выдачи
dateOfExpiry
:: Date
-- Дата окончания срока
} deriving (Eq, Show)
--
действия
data Date
= Date {
day
:: Int,
month
:: Int,
year
:: Int
} deriving (Show, Eq)