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.

Used-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)