This small library defines data types
Tup9 for homogeneous tuples of small size (both strict and lazy),
and various instances for them, most notably
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
(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
The same instances and functions are provided.