Ответ 1
Вы должны использовать синтаксис записи в двух ситуациях:
- Тип имеет много полей
- Объявление типа не дает никакого представления о его предполагаемом макете
Например, тип Point можно просто объявить как:
data Point = Point Int Int deriving (Show)
Очевидно, что первый Int обозначает координату x, а второй обозначает y. Но случай со следующим объявлением типа отличается (взято из Learn You a Haskell for Great Good):
data Person = Person String String Int Float String String deriving (Show)
Предполагаемый тип макета: имя, фамилия, возраст, высота, номер телефона и любимый аромат мороженого. Но это не очевидно в вышеупомянутой декларации. Здесь удобно использовать синтаксис записи:
data Person = Person { firstName :: String
, lastName :: String
, age :: Int
, height :: Float
, phoneNumber :: String
, flavor :: String
} deriving (Show)
Синтаксис записи сделал код более читаемым и сохранил большое количество ввода, автоматически определяя все функции доступа для нас!