Records (Base Types)

The following examples show records and their types.

val r1 = @{x = "flat record", y = 2.0} : @{x = string, y = double}
val r2 = '{x = "boxed record", y = true}: '{x = string, y = bool}
val r3 = $rec{x = "boxed record", y = 42}: '{x = string, y = int}

And you can use it as follows.

val @{x = m, y = n} = r1
val _ = println! (m, n)

val '{x = m, ...} = r3
val _ = println! m 

val $rec(y = n, ...) = r2
val _ = println! n

@{} is for flat records. '{} and $rec{} is for boxed records. We can use ... to mean we don’t care about the rest of records.

Notice that there is one line where $rec() is used, weird.