1.9 KiB

+++ title = "List Operations" weight = 1 sort_by = "weight" in_search_index = true +++

The UCG list modules can be imported like so let l = import "std/lists.ucg"; It has a number of useful operations.

reverse

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];

str_join

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 space
let l = import "std/lists.ucg";
l.str_join{
    sep=" ",
    list=[1, 2, 3]
} == "1,2,3";

len

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;

head and tail

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];

enumerate

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"]];