Safe Haskell | None |
---|---|

Language | Haskell98 |

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 tupProxy :: f a -> Proxy 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.

A third implementation is in Data.Tup.Newtype; here the tuples are newtypes of Haskell tuples.
Just replace `Tup`

by `NTup`

.

# Documentation

module Data.Tup.Tup