tup-functor- Homogeneous tuples

Safe HaskellNone



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.