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> }