-- | 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)@. -- module Data.Tup.Tup ( module Data.Tup.Tup.Class , module Data.Tup.Tup.Lazy , module Data.Tup.Tup.Concat ) where import Control.Applicative ( Applicative ) -- only for Haddock import Data.Tup.Tup.Class import Data.Tup.Tup.Lazy import Data.Tup.Tup.Concat