# Creation of New Lists

Here, $S$ denotes the list ${[*}\ s_1, \ldots, s_n\ {*]}$, while $T$ denotes the list ${[*}\ t_1, \ldots, t_m\ {*]}$.

## `S cat T: List, List -> List`

The list formed by concatenating the terms of the list $S$ with the terms of the list $T$, i.e. the list ${[*}\ s_1, \ldots, s_n, t_1,\ldots, t_m\ {*]}$.

## `S cat:= T: List, List`

(Procedure.) Destructively concatenate the terms of the list $T$ to $S$; i.e. so $S$ becomes the list ${[*}\ s_1, \ldots, s_n, t_1,\ldots, t_m\ {*]}$.

## `Append(S, x): List, Elt -> List`

The list formed by adding the object $x$ to the end of the list $S$, i.e. the list ${[*}\ s_1,\ldots s_n, x\ {*]}$.

## `Append(~S, x): List, Elt`

(Procedure.) Destructively add the object $x$ to the end of the list $S$; i.e. so $S$ becomes the list ${[*}\ s_1,\ldots s_n, x\ {*]}$.

## `Insert(~S, i, x): List, RngIntElt, Any`

## `Insert(S, i, x): List, RngIntElt, Any -> List`

Create the list formed by inserting the object $x$ at position $i$ in $S$ and moving the terms $S[i], \ldots, S[n]$ down one place, i.e., the list ${[*}\ s_1, \ldots, s_{i-1}, x, s_{i}, \ldots, s_{n}\ {*]}$. Note that $i$ must not be bigger than $n+1$ where $n$ is the length of $S$. There are two versions of this: a procedure, where $S$ is replaced by the new list, and a function, which returns the new list. The procedural version takes a reference $\sim S$ to $S$ as an argument. Note that the procedural version is much more efficient since the list $S$ will not be copied.

## `Prune(S): List -> List`

The list formed by removing the last term of the list $S$, i.e. the list ${[*}\ s_1$, $\ldots$, $s_{n-1}\ {*]}$.

## `Prune(~S): List`

(Procedure.) Destructively remove the last term of the list $S$; i.e. so $S$ becomes the list ${[*}\ s_1$, $\ldots$, $s_{n-1}\ {*]}$.

## `SequenceToList(Q): SeqEnum -> List`

## `Seqlist(Q): SeqEnum -> List`

Given a sequence $Q$, construct a list whose terms are the elements of $Q$ taken in the same order.

## `TupleToList(T): Tup -> List`

## `Tuplist(T): Tup -> List`

Given a tuple $T$, construct a list whose terms are the elements of $T$ taken in the same order.

## `Reverse(L): List -> List`

Given a list $L$ return the same list, but in reverse order.
