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


-- | Homogeneous tuples of arbitrary length.
--   
--   Please see the README on Github at
--   <a>https://github.com/athanclark/sparrow-server#readme</a>
@package n-tuple
@version 0.0.2.0

module Data.NTuple
data NTuple (size :: Nat) a
empty :: NTuple 0 a

-- | Project an element out of the tuple
proj :: (n <= size, (n :> 0) ~  'True, KnownNat n) => Proxy n -> NTuple size a -> a

-- | Include an element to the tuple, overwriting on an existing index
incl :: (n <= (size + 1), (n :> 0) ~  'True, KnownNat n, size' ~ If (n :== (size + 1)) (size + 1) size) => Proxy n -> a -> NTuple size a -> NTuple size' a
toVector :: NTuple size a -> Vector a
_1 :: Proxy 1
_2 :: Proxy 2
_3 :: Proxy 3
_4 :: Proxy 4
_5 :: Proxy 5
_6 :: Proxy 6
_7 :: Proxy 7
_8 :: Proxy 8
_9 :: Proxy 9
_10 :: Proxy 10
instance Data.Traversable.Traversable (Data.NTuple.NTuple size)
instance Data.Foldable.Foldable (Data.NTuple.NTuple size)
instance GHC.Base.Functor (Data.NTuple.NTuple size)
instance GHC.Generics.Generic (Data.NTuple.NTuple size a)
instance (Data.Data.Data a, GHC.TypeNats.KnownNat size) => Data.Data.Data (Data.NTuple.NTuple size a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.NTuple.NTuple size a)
instance GHC.Show.Show a => GHC.Show.Show (Data.NTuple.NTuple size a)
