-- | 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