Creating and Modifying Tuples#

elt< C | a₁, a₂, ..., aₖ >: SetCart, Elt, ..., Elt -> Tup#
C ! < a₁, a₂, ..., aₖ >: SetCart, Elt, ..., Elt -> Tup#

Given a cartesian product \(C = R\ _1 \times \cdots \times R_k\) and a sequence of elements \(a_1, a_2, \ldots, a_k\), such that \(a_i\) belongs to the set \(R_i\) \((i = 1, \ldots, k)\), create the tuple \(T = < a_1, a_2, ..., a_k\ >\) of \(C\).

< a₁, a₂, ..., aₖ >: Elt, ..., Elt -> Tup#

Given a cartesian product \(C = R_1 \times \cdots \times R_k\) and a list of elements \(a_1, a_2, \ldots, a_k\), such that \(a_i\) belongs to the set \(R_i\), \((i = 1, \ldots, k)\), create the tuple \(T = < a_1, a_2, ..., a_k\ >\) of \(C\). Note that if \(C\) does not already exist, it will be created at the time this expression is evaluated.

Append(T, x): Tup, Elt -> Tup#

Return the tuple formed by adding the object \(x\) to the end of the tuple \(T\). Note that the result lies in a new cartesian product of course.

Append(~T, x): Tup, Elt#

(Procedure.) Destructively add the object \(x\) to the end of the tuple \(T\). Note that the new \(T\) lies in a new cartesian product of course.

Prune(T): Tup -> Tup#

Return the tuple formed by removing the last term of the tuple \(T\). The length of \(T\) must be greater than 1. Note that the result lies in a new cartesian product of course.

Prune(~T): Tup#

(Procedure.) Destructively remove the last term of the tuple \(T\). The length of \(T\) must be greater than 1. Note that the new \(T\) lies in a new cartesian product of course.

Flat(T): Tup -> Tup#

Construct the flattened version of the tuple T. The flattening is done in the same way as Flat, namely depth-first.

Example: Tuple (ex-cc3d86)#

We build a set of pairs consisting of primes and their reciprocals.

> C := car< Integers(), RationalField() >;
> C ! < 26/13, 13/26 >;
<2, 1/2>
> S := { C | <p, 1/p> : p in [1..25] | IsPrime(p) };
> S;
{ <5, 1/5>, <7, 1/7>, <2, 1/2>, <19, 1/19>, <17, 1/17>, <23, 1/23>, <11, 1/11>,
<13, 1/13>, <3, 1/3> }

Run in calculator