Records are like tuples but with named parameters. In other words, they hold a set of key/data pairs. To instantiate a record, you must first declare its type as follows :
type user = {
id : nat,
is_admin : bool,
name : string
};
And here is how to define an associated record value :
let alice : user = {
id : 1 as nat,
is_admin : true,
name : "Alice"
};
Access
You can access the whole record or get one key in particular :
let alice_admin: bool = alice.is_admin;
Update
You can modify values in a record as follows :
let change_name = (u: user): user => ({...u, name: "Mark"});
⚠️ Note that user has not been changed by the function. Rather, the function returned a nameless new version of it with the modified name.
Your mission
1- Refactor the type of coordinates as a record instead of a tuple. Name the parameters x, y and z.
2- Refactor earth_coordinates with the record type.
2- Refactor the earth_coordinates update of the last parameters with the record type.