Skip to main content


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

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

getName :: Person -> String
getName person =

main = log (getName max)