This is the ThingsDB documentation for version v0, click here for the latest version!
All nested arrays are immutable and thus tuples.
list = [];
list.push(['this list will be nested and therefore convert to a tuple']);
// Check that the first item in `list` is indeed a `tuple`
assert(is_tuple(list[0]));
// Check that the `tuple` is indeed immutable
assert(is_err(try(list[0].push('cannot be added to a tuple'))));
A tuple
only becomes a tuple
when it is nested inside another tuple
or list
, which means the tuple
will be immutable.
ThingsDB does this to make watching things possible; it wants to update all changes within a thing to the subscribers that are watching, and finds them by thing. Since the parent of a nested tuple
is another tuple
or list
, the watched thing
holding the list
with nested lists would not be found.
Another property of lists
and tuples
in ThingsDB is that they both are always copies, and not a reference as in most languages. This is also done to enable watching.
Function | Description |
---|---|
choice | Return a random item from a tuple. |
each | Iterate over all items in a tuple. |
every | Check if all items pass a given test. |
filter | Return a new list with items that pass a given test. |
find | Return the first item that pass a given test. |
find_index | Return the index of the first item that pass a given test. |
first | Return the first item from a tuple. |
has | Return true if a given value is found in the tuple, or false if not found. |
index_of | Return the index of a given value, or nil if not found. |
is_unique | Returns true if each item in a tuple is unique or false if a duplicate is found. |
join | Returns a string with all items joined. |
last | Return the last item from a tuple. |
len | Return the length of the tuple. |
map | Return a new list with the results of calling a provided closure on every item. |
reduce | Execute a reducer function on each item, resulting in a single output value. |
reverse | Return a new list with the items in reverse order. |
some | Check if at least one item passes a given test. |
sort | Return a new sorted list . |
unique | Returns a new list without duplicate items. |
The above functions correspond to those of a list
. For that reason, they are only listed under the data type list
.