Skip to main content

Records

Records are basically like Objects in JS. Yet, immutable, of course. As with functions, we can and should describe their structure and types before initialising them:

type Person =
{ name :: String,
age :: Int }

max :: Person
max = { name: "Max", age: 22 }

main = log (show max)

The code will log the following in the console:

{ age: 22, name: "Max" }

As you can see, just like an object in JavaScript.

Accessing a records properties

Accessing those works just like in JavaScript, using the "."-operator.

main = log (show max.name)

We can also create a function to access the name-property of a Person-type variable:

getName :: Person -> String
getName person = person.name

main = log (getName max)