- This type is parameterized by \hs{a}, which can contain any type at
- all. This means that \hs{append} can append an element to a vector,
- regardless of the type of the elements in the list (as long as the type of
- the value to be added is of the same type as the values in the vector).
- This kind of polymorphism is extremely useful in hardware designs to make
- operations work on a vector without knowing exactly what elements are
- inside, routing signals without knowing exactly what kinds of signals
- these are, or working with a vector without knowing exactly how long it
- is. Polymorphism also plays an important role in most higher order
- functions, as we will see in the next section.
+ This type is parameterized in both \hs{a} and \hs{b}, which can both
+ represent any type at all (as long as that type is supported by the
+ \CLaSH\ compiler). This means that \hs{first} works for any tuple,
+ regardless of what elements it contains. This kind of polymorphism is
+ extremely useful in hardware designs, for example when routing signals
+ without knowing their exact type, or specifying vector operations that
+ work on vectors of any length and element type. Polymorphism also plays an
+ important role in most higher order functions, as will be shown in the
+ next section.