The syntax for creating records and extracting their fields is identical to SML's, with a few added conveniences. Record fields given in a record constructor without values are assigned the values of variables of the same names. For example, if there is a variable x in scope, then the expressions {x = x} and {x} are equivalent. There are also O'Caml style functional record update expressions, such as {myRecord with a = 1, b = 2} to construct a record identical to myRecord except for the given field replacements.