Tables
Tables map hashable values to arbitrary objects.
They are defined using double curly brackets, with ->
mapping each key to
each value:
tab: {{"key" -> "value", / -> [/\, "a"]}};
A table may be indexed by its keys, which will return their corresponding values, for example, from the previous table:
tab<<"key">>
returns"value"
tab<</>>
returns[2, "a"]
After its initialization, the items of a table can be set using this indexing syntax. If the key doesn't already exist in the table, it will be created.
tab<<"key">>: "newvalue"
will overwrite the previous value oftab<<"key">>
.
tab<<"newkey">>: //\
will create a new item in the table, with key"newkey"
and value6
.
Tables can be merged together with the addition operator +
. The values of the
table to the right of the operator take priority when both tables share keys.
Items can be removed from a table by key using the subtraction operator -
:
{{"a" -> /, "b" -> /\, // -> /\//}} - "b"
gives{{"a" -> /, // -> /\//}}
Tables can be inverted using the unary ~
operator:
~{{"a" -> /, "b" -> /\}}
gives{{/ -> "a", /\ -> "b"}}