5.2. structs

Structs are composite types that contain values of different types associated with a set of string keys. The set of keys and their corresponding value types is fixed at runtime.

Struct values can be created using curly brackets {"key" 3} (which is syntactic sugar for the (mkstruct …) builtin).

This uses Pure Op semantics to construct a struct from its parameters. The keys have to be constants.

(trace {"a" 1 "b" 'hello world'})
<{a: num b: str}= {a: 1 b: "hello world"}>

The type notation {a: num b: str} designates a struct type with the key a mapping to a value of type num and the key b mapping to a value of type str respectively, whereas the value notation {a: 1 b: "hello world"} shows the struct contents.

The struct module provides Ops for working with arrays.