С сопоставлением с шаблоном
Мы можем построить функцию, которая использует сопоставление с образцом:
objectType1 :: Object -> Type1
objectType1 (Object x _ _ _) = x
С синтаксис записи
Мы также можем определить тип данных с помощью синтаксиса записи :
data Object = Object {objectType1 :: Type1,
objectType2 :: Type2,
objectType3 :: Type3,
objectType4 :: Type4} deriving(Eq, Show)
Затем Haskell автоматически создаст геттеры, поэтому вы неявно создали такую objectType1
функцию.
Мы также можем использовать такой синтаксис записи как « setter », например:
setObjectType1 :: Type1 -> Object -> Object
setObjectType1 t o = o { objectType1 = t}