Records

Records

type Name = String

type Person =
  { firstName  :: Name
  , secondName :: Name
  }

{-
This is syntax sugared
"type Person = Record (FirstName  :: Name , SecondName :: Name)"
-}

Fields can be accessed by .

leader :: Person
leader = {firstName = "John", lastName = "Portsman"}

>leader.firstName
"John"

This is how we update a record.

newLeader :: Person
newLeader = leader{firstName = "James"}

>newLeader.lastName
"Portsman"