-- | 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 @tpp@ which translates
-- the syntax @\{\{a,b,c\}\}@ into @(Tup3 a b c)@.
module Data.Tup
( module Data.Tup.Class
, module Data.Tup.Lazy
)
where
import Control.Applicative ( Applicative ) -- only for Haddock
import Data.Tup.Class
import Data.Tup.Lazy