ref ee to a value vloc in memory to hold vv in locloct ref where t is a type.ref is used as a keyword in type and as a keyword in valueref e : t ref if e : t.Locations are values, but they are not expressions (No pointer arithmetic 😭). We cannot directly write a value
e1 := e2e2 to v2e1 to location locv2 in loc()e2 : te1 : t refe1 := e2 : unitThe type of a location cannot change
unit is a type.(), pronounced "unit"bool is a type.true and falseunit is like bool but with one fewer typevoidvoidprint_string : string -> unitassert b : unit (assuming b : bool).!ee to locloce has type t ref, then !e has type t.