A tuple type is defined similarly to a tuple expression. For example, given two types a and b, the type (a, b) represents a tuple that consists of an element of type a and an element of type b. For example (felt, felt) may be used to represent a (2-dimensional) point.

Cairo also supports named tuples, for example (x: felt, y: felt) represents a tuple similar to (felt, felt) except that the two items are named x and y, respectively.

User-defined type aliases

You can give a new alias for a type as follows:

using Point = (x: felt, y: felt);

Note that Point is not a new type in this case – it is only an alias to (x: felt, y: felt). You can use Point as an alias for this type.

For example, you may replace

local pt: (x: felt, y: felt) = (x=2, y=3);


local pt: Point = (x=2, y=3);