The UCG list modules can be imported like so let l = import "std/lists.ucg";
It has a number of useful operations.
The reverse module reverses a list. It has a single required parameter:
list
the list to reverse.let l = import "std/lists.ucg"; l.reverse{list=[1, 2, 3]} == [3, 2, 1];
The str_join module joins a list with the string representation of each element. It has two parameters:
list
which is required. The list to reverse.sep
which is optional and defines the separater to use when joining the elements. Defaults to a single spacelet l = import "std/lists.ucg"; l.str_join{ sep=" ", list=[1, 2, 3] } == "1,2,3";
The len function returns the length of a list. It has a single required parameter.
list
The list to reverse.let l = import "std/lists.ucg"; l.len{list=[0, 1, 2, 3]} == 4;
The tail
function returns the tail of a list minus it's head.
let l = import "std/lists.ucg"; let tail = l.tail([0,1,2,3]); tail == [1,2,3];
The head
function returns the head of the list as a list of one item.
let l = import "std/lists.ucg"; let hd = l.head([0,1,2,3]); tail == [0];
The slice module returns a slice of the input list. The slice module takes three parameters.
start
which is optional and defaults to 0end
which is optional and defaults the length of the listlist
which is required and must be a list.
list.slice{start=0, end=2, list=[0,1,2,3]} == [0,1,2];
The enumerate module enumerates the elements of a list. It has three parameters.
list
which is required and is the list to enumerate.start
which is optional and defines the start number of the enumeration. (defaults to 0)step
which is optional and defines the step amount for the enumeration. (defaults to 1)let l = import "std/lists.ucg"; // with defaults l.enumerate{list=[1, 2, 3]} == [[0, 1], [1, 2], [3, 4]]; // With all parameters l.enumerate{ start=1, step=2, list=["foo", "bar", "foobar"], } == [[1, "foo"], [3, "bar"], [5, "foobar"]];