The map type

The map type represents an unordered, mutable, resizable collection of zero or more key-value pairs, where each key is a unique string.

Map keys are always coerced to strings; if you try to access a map using a non-string key, the key will be automatically coerced to a string before use.

Map initializers are similar to list initializers, but the contents must begin with a double-colon (::).

Map keys come in two flavors:

  • Static keys: Evaluated at compile-time. They must be identifiers or string literals.
  • Dynamic keys: Evaluated at run-time. They must be blocks.
# Create an empty map
<$empty-map = (::)>

# Create a map with various value types
<$secret-key = occupation>
<$location = US>

(::
    # Regular keys and values
    name = Alex;
    age = 25;

    # Shorthand for `location = <location>`
    <location>;

    # String literals can specify keys that aren't valid identifiers
    "favorite color" = {red|green|blue};

    # An expression can also provide the key
    {<secret-key>} = painter
)