Safe Haskell | None |
---|

This small library defines data types `Tup1`

, `Tup2`

... `Tup9`

for homogeneous tuples of small size (both strict and lazy),
and various instances for them, most notably `Functor`

and `Applicative`

. We also have a `Tup`

type class:

class Tup f where tupSize :: f a -> Int tupToList :: f a -> [a] tupFromList :: [a] -> f a tupUndef :: f a -> a

Also included is a very simple preprocesszor `tuplepp`

which translates
the syntax `{{a,b,c}}`

into `(Tup3 a b c)`

.

A different implementation is also given in the module Data.Tup.Vec; this basically implements
lists which encode their length in their types. For this, just replace `Tup`

by `Vec`

everywhere.
The same instances and functions are provided.

# Documentation

module Data.Tup.Tup