-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Wrappers for n-ary tuples with Traversable and Applicative/Monad instances.
--   
--   Provides <tt>newtype</tt> wrappers for n-ary homogenous tuples of
--   types <tt>(a,...,a)</tt> and instances for <tt>Functor</tt>,
--   <tt>Applicative</tt> (zipping), <tt>Monad</tt>, <tt>Foldable</tt> and
--   <tt>Traversable</tt>. The package aims to be Haskell98 compliant.
@package tuples-homogenous-h98
@version 0.1.1.0


-- | Provides wrappers for homogenous tuples defined as
--   
--   <pre>
--   newtype TupleN a = TupleN (a,...,a)
--   </pre>
--   
--   together with helper methods
--   
--   <pre>
--   tupleN :: a -&gt; ... -&gt; a -&gt; TupleN a
--   </pre>
--   
--   and instances for
--   
--   <ul>
--   <li><a>Functor</a> applies a given function to all elements of a
--   tuple.</li>
--   <li><a>Applicative</a> zips two tuples, applying <i>i</i>-th function
--   of the first to <i>i</i>-th element of the second.</li>
--   <li><a>Monad</a> where <i>i</i>-th element of <tt>x &gt;&gt;= f</tt>
--   is the result of applying <tt>f</tt> to the <i>i</i>-th element of
--   <tt>x</tt> and taking its <i>i</i>-th result. In other words, <tt>join
--   :: Tupple N (TuppleN a) -&gt; TuppleN a</tt> returns the diagonal of
--   the <i>NxN</i> matrix.</li>
--   <li><a>Foldable</a> and <a>Traversable</a> folds/traverses over the
--   <i>N</i> elements.</li>
--   </ul>
module Data.Tuple.Homogenous
newtype Tuple0 a
Tuple0 :: () -> Tuple0 a
[untuple0] :: Tuple0 a -> ()
tuple0 :: Tuple0 a

-- | This <tt>newtype</tt> intentionally omits the <tt>untuple1</tt>
--   accessor as there is no 1-tuple in Haskell.
newtype Tuple1 a
Tuple1 :: a -> Tuple1 a
tuple1 :: a -> Tuple1 a
newtype Tuple2 a
Tuple2 :: ((a, a)) -> Tuple2 a
[untuple2] :: Tuple2 a -> ((a, a))
tuple2 :: () => a -> a -> Tuple2 a
newtype Tuple3 a
Tuple3 :: ((a, a, a)) -> Tuple3 a
[untuple3] :: Tuple3 a -> ((a, a, a))
tuple3 :: () => a -> a -> a -> Tuple3 a
newtype Tuple4 a
Tuple4 :: ((a, a, a, a)) -> Tuple4 a
[untuple4] :: Tuple4 a -> ((a, a, a, a))
tuple4 :: () => a -> a -> a -> a -> Tuple4 a
newtype Tuple5 a
Tuple5 :: ((a, a, a, a, a)) -> Tuple5 a
[untuple5] :: Tuple5 a -> ((a, a, a, a, a))
tuple5 :: () => a -> a -> a -> a -> a -> Tuple5 a
newtype Tuple6 a
Tuple6 :: ((a, a, a, a, a, a)) -> Tuple6 a
[untuple6] :: Tuple6 a -> ((a, a, a, a, a, a))
tuple6 :: () => a -> a -> a -> a -> a -> a -> Tuple6 a
newtype Tuple7 a
Tuple7 :: ((a, a, a, a, a, a, a)) -> Tuple7 a
[untuple7] :: Tuple7 a -> ((a, a, a, a, a, a, a))
tuple7 :: () => a -> a -> a -> a -> a -> a -> a -> Tuple7 a
newtype Tuple8 a
Tuple8 :: ((a, a, a, a, a, a, a, a)) -> Tuple8 a
[untuple8] :: Tuple8 a -> ((a, a, a, a, a, a, a, a))
tuple8 :: () => a -> a -> a -> a -> a -> a -> a -> a -> Tuple8 a
newtype Tuple9 a
Tuple9 :: ((a, a, a, a, a, a, a, a, a)) -> Tuple9 a
[untuple9] :: Tuple9 a -> ((a, a, a, a, a, a, a, a, a))
tuple9 :: () => a -> a -> a -> a -> a -> a -> a -> a -> a -> Tuple9 a
newtype Tuple10 a
Tuple10 :: ((a, a, a, a, a, a, a, a, a, a)) -> Tuple10 a
[untuple10] :: Tuple10 a -> ((a, a, a, a, a, a, a, a, a, a))
tuple10 :: () => a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Tuple10 a
newtype Tuple11 a
Tuple11 :: ((a, a, a, a, a, a, a, a, a, a, a)) -> Tuple11 a
[untuple11] :: Tuple11 a -> ((a, a, a, a, a, a, a, a, a, a, a))
tuple11 :: () => a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Tuple11 a
newtype Tuple12 a
Tuple12 :: ((a, a, a, a, a, a, a, a, a, a, a, a)) -> Tuple12 a
[untuple12] :: Tuple12 a -> ((a, a, a, a, a, a, a, a, a, a, a, a))
tuple12 :: () => a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Tuple12 a
newtype Tuple13 a
Tuple13 :: ((a, a, a, a, a, a, a, a, a, a, a, a, a)) -> Tuple13 a
[untuple13] :: Tuple13 a -> ((a, a, a, a, a, a, a, a, a, a, a, a, a))
tuple13 :: () => a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Tuple13 a
newtype Tuple14 a
Tuple14 :: ((a, a, a, a, a, a, a, a, a, a, a, a, a, a)) -> Tuple14 a
[untuple14] :: Tuple14 a -> ((a, a, a, a, a, a, a, a, a, a, a, a, a, a))
tuple14 :: () => a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Tuple14 a
newtype Tuple15 a
Tuple15 :: ((a, a, a, a, a, a, a, a, a, a, a, a, a, a, a)) -> Tuple15 a
[untuple15] :: Tuple15 a -> ((a, a, a, a, a, a, a, a, a, a, a, a, a, a, a))
tuple15 :: () => a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Tuple15 a
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple15 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple15 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple15 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple15 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple15 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple14 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple14 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple14 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple14 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple14 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple13 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple13 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple13 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple13 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple13 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple12 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple12 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple12 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple12 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple12 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple11 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple11 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple11 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple11 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple11 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple10 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple10 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple10 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple10 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple10 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple9 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple9 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple9 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple9 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple9 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple8 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple8 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple8 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple8 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple8 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple7 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple7 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple7 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple7 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple7 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple6 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple6 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple6 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple6 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple6 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple5 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple5 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple5 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple5 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple5 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple4 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple4 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple4 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple4 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple4 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple3 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple3 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple3 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple3 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple3 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple2 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple2 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple2 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple2 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple2 a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple1 a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple1 a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple1 a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Tuple.Homogenous.Tuple1 a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Tuple.Homogenous.Tuple1 a)
instance GHC.Enum.Bounded (Data.Tuple.Homogenous.Tuple0 a)
instance GHC.Classes.Eq (Data.Tuple.Homogenous.Tuple0 a)
instance GHC.Classes.Ord (Data.Tuple.Homogenous.Tuple0 a)
instance GHC.Read.Read (Data.Tuple.Homogenous.Tuple0 a)
instance GHC.Show.Show (Data.Tuple.Homogenous.Tuple0 a)
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple15
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple15
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple15
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple15
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple15
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple14
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple14
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple14
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple14
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple14
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple13
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple13
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple13
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple13
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple13
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple12
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple12
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple12
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple12
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple12
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple11
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple11
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple11
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple11
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple11
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple10
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple10
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple10
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple10
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple10
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple9
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple9
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple9
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple9
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple9
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple8
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple8
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple8
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple8
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple8
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple7
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple7
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple7
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple7
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple7
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple6
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple6
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple6
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple6
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple6
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple5
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple5
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple5
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple5
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple5
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple4
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple4
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple4
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple4
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple4
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple3
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple3
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple3
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple3
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple3
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple2
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple2
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple2
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple2
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple2
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple1
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple1
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple1
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple1
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple1
instance GHC.Base.Functor Data.Tuple.Homogenous.Tuple0
instance GHC.Base.Applicative Data.Tuple.Homogenous.Tuple0
instance GHC.Base.Monad Data.Tuple.Homogenous.Tuple0
instance Data.Foldable.Foldable Data.Tuple.Homogenous.Tuple0
instance Data.Traversable.Traversable Data.Tuple.Homogenous.Tuple0
