Records

  1. type Name = String
  2. type Person =
  3. { firstName :: Name
  4. , secondName :: Name
  5. }
  6. {-
  7. This is syntax sugared
  8. "type Person = Record (FirstName :: Name , SecondName :: Name)"
  9. -}

Fields can be accessed by .

  1. leader :: Person
  2. leader = {firstName = "John", lastName = "Portsman"}
  3. >leader.firstName
  4. "John"

This is how we update a record.

  1. newLeader :: Person
  2. newLeader = leader{firstName = "James"}
  3. >newLeader.lastName
  4. "Portsman"