Types
Types annotations restrict a datum without capturing it into a name.
They appear after the colon : in a capture.
Type names
Wolf provides a few basic type names, some of which you’ve seen already:
num- floating point numbersint- integersuni- the unique value - only equal to itselfbool- boolean outcomesstr- strings of charactersty- a type definition
Tuple types
As with captures, tuple syntax can be used to represent the type of various tuples.
In place of sub-values or sub-captures, sub-types are provided as entries.
[num. str, bool]
[.name str, .age num]
As shorthand for arrays with known quantities of a single type, write the quantity as an integer, followed by the type.
-- These are equivalent.
[num, num, num]
[3 num]
-- These are also equivalent.
[str, bool, bool]
[str, 2 bool]
Rest-of-tuple types
The rest of a tuple’s data can be constrained to a certain type using ellipses ....
This includes both named and unnamed data.
This is most commonly used to represent dynamically-sized arrays.
-- Any quantity of strings.
[... str]
-- A name, an age, and some booleans.
[.name str, .age num, ... bool]