tup-functor-0.3.0.0: Homogeneous tuples

Safe HaskellSafe
LanguageHaskell98

Data.Tup.Vec

Contents

Description

Homogeneous lists with the length encoded in the type.

This can be considered as a different implementation of Data.Tup.Tup (one which also scales for vectors/tuples longer than 9 elements)

Example:

vec3 1 2 3  :: Vec3 Int
{{ 1,2,3 }} :: Vec3 Int
Cons 1 (Cons 2 (Cons 3 Empty)) :: Cons (Cons (Cons Empty)) Int

Synopsis

The Vec type class

Type abbreviations for short vectors

The constructor types

data Empty a Source #

Constructors

Empty 

Instances

Functor Empty Source # 

Methods

fmap :: (a -> b) -> Empty a -> Empty b #

(<$) :: a -> Empty b -> Empty a #

Applicative Empty Source # 

Methods

pure :: a -> Empty a #

(<*>) :: Empty (a -> b) -> Empty a -> Empty b #

(*>) :: Empty a -> Empty b -> Empty b #

(<*) :: Empty a -> Empty b -> Empty a #

Foldable Empty Source # 

Methods

fold :: Monoid m => Empty m -> m #

foldMap :: Monoid m => (a -> m) -> Empty a -> m #

foldr :: (a -> b -> b) -> b -> Empty a -> b #

foldr' :: (a -> b -> b) -> b -> Empty a -> b #

foldl :: (b -> a -> b) -> b -> Empty a -> b #

foldl' :: (b -> a -> b) -> b -> Empty a -> b #

foldr1 :: (a -> a -> a) -> Empty a -> a #

foldl1 :: (a -> a -> a) -> Empty a -> a #

toList :: Empty a -> [a] #

null :: Empty a -> Bool #

length :: Empty a -> Int #

elem :: Eq a => a -> Empty a -> Bool #

maximum :: Ord a => Empty a -> a #

minimum :: Ord a => Empty a -> a #

sum :: Num a => Empty a -> a #

product :: Num a => Empty a -> a #

Traversable Empty Source # 

Methods

traverse :: Applicative f => (a -> f b) -> Empty a -> f (Empty b) #

sequenceA :: Applicative f => Empty (f a) -> f (Empty a) #

mapM :: Monad m => (a -> m b) -> Empty a -> m (Empty b) #

sequence :: Monad m => Empty (m a) -> m (Empty a) #

Tup Empty Source # 
Tup v => TupConcat Empty v v Source # 

Methods

tupConcat :: Empty a -> v a -> v a Source #

Bounded (Empty a) Source # 

Methods

minBound :: Empty a #

maxBound :: Empty a #

Eq (Empty a) Source # 

Methods

(==) :: Empty a -> Empty a -> Bool #

(/=) :: Empty a -> Empty a -> Bool #

Fractional a => Fractional (Empty a) Source # 

Methods

(/) :: Empty a -> Empty a -> Empty a #

recip :: Empty a -> Empty a #

fromRational :: Rational -> Empty a #

Num a => Num (Empty a) Source # 

Methods

(+) :: Empty a -> Empty a -> Empty a #

(-) :: Empty a -> Empty a -> Empty a #

(*) :: Empty a -> Empty a -> Empty a #

negate :: Empty a -> Empty a #

abs :: Empty a -> Empty a #

signum :: Empty a -> Empty a #

fromInteger :: Integer -> Empty a #

Ord (Empty a) Source # 

Methods

compare :: Empty a -> Empty a -> Ordering #

(<) :: Empty a -> Empty a -> Bool #

(<=) :: Empty a -> Empty a -> Bool #

(>) :: Empty a -> Empty a -> Bool #

(>=) :: Empty a -> Empty a -> Bool #

max :: Empty a -> Empty a -> Empty a #

min :: Empty a -> Empty a -> Empty a #

Show a => Show (Empty a) Source # 

Methods

showsPrec :: Int -> Empty a -> ShowS #

show :: Empty a -> String #

showList :: [Empty a] -> ShowS #

Monoid a => Monoid (Empty a) Source # 

Methods

mempty :: Empty a #

mappend :: Empty a -> Empty a -> Empty a #

mconcat :: [Empty a] -> Empty a #

Storable a => Storable (Empty a) Source # 

Methods

sizeOf :: Empty a -> Int #

alignment :: Empty a -> Int #

peekElemOff :: Ptr (Empty a) -> Int -> IO (Empty a) #

pokeElemOff :: Ptr (Empty a) -> Int -> Empty a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Empty a) #

pokeByteOff :: Ptr b -> Int -> Empty a -> IO () #

peek :: Ptr (Empty a) -> IO (Empty a) #

poke :: Ptr (Empty a) -> Empty a -> IO () #

data Cons v a Source #

Constructors

Cons a (v a) 

Instances

Functor v => Functor (Cons v) Source # 

Methods

fmap :: (a -> b) -> Cons v a -> Cons v b #

(<$) :: a -> Cons v b -> Cons v a #

Applicative v => Applicative (Cons v) Source # 

Methods

pure :: a -> Cons v a #

(<*>) :: Cons v (a -> b) -> Cons v a -> Cons v b #

(*>) :: Cons v a -> Cons v b -> Cons v b #

(<*) :: Cons v a -> Cons v b -> Cons v a #

Foldable v => Foldable (Cons v) Source # 

Methods

fold :: Monoid m => Cons v m -> m #

foldMap :: Monoid m => (a -> m) -> Cons v a -> m #

foldr :: (a -> b -> b) -> b -> Cons v a -> b #

foldr' :: (a -> b -> b) -> b -> Cons v a -> b #

foldl :: (b -> a -> b) -> b -> Cons v a -> b #

foldl' :: (b -> a -> b) -> b -> Cons v a -> b #

foldr1 :: (a -> a -> a) -> Cons v a -> a #

foldl1 :: (a -> a -> a) -> Cons v a -> a #

toList :: Cons v a -> [a] #

null :: Cons v a -> Bool #

length :: Cons v a -> Int #

elem :: Eq a => a -> Cons v a -> Bool #

maximum :: Ord a => Cons v a -> a #

minimum :: Ord a => Cons v a -> a #

sum :: Num a => Cons v a -> a #

product :: Num a => Cons v a -> a #

Traversable v => Traversable (Cons v) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> Cons v a -> f (Cons v b) #

sequenceA :: Applicative f => Cons v (f a) -> f (Cons v a) #

mapM :: Monad m => (a -> m b) -> Cons v a -> m (Cons v b) #

sequence :: Monad m => Cons v (m a) -> m (Cons v a) #

Tup v => Tup (Cons v) Source # 

Methods

tupSize :: Cons v a -> Int Source #

tupToList :: Cons v a -> [a] Source #

tupFromList :: [a] -> Cons v a Source #

tupProxy :: Cons v a -> Proxy * a Source #

tupUndef :: Cons v a -> a Source #

constantTup :: a -> Cons v a Source #

undefinedTup :: Cons v a Source #

(Tup u, Tup v, TupConcat u v w) => TupConcat (Cons u) v (Cons w) Source # 

Methods

tupConcat :: Cons u a -> v a -> Cons w a Source #

(Bounded a, Bounded (v a)) => Bounded (Cons v a) Source # 

Methods

minBound :: Cons v a #

maxBound :: Cons v a #

(Eq a, Eq (v a)) => Eq (Cons v a) Source # 

Methods

(==) :: Cons v a -> Cons v a -> Bool #

(/=) :: Cons v a -> Cons v a -> Bool #

(Fractional a, Fractional (v a), Tup v) => Fractional (Cons v a) Source # 

Methods

(/) :: Cons v a -> Cons v a -> Cons v a #

recip :: Cons v a -> Cons v a #

fromRational :: Rational -> Cons v a #

(Num a, Num (v a), Tup v) => Num (Cons v a) Source # 

Methods

(+) :: Cons v a -> Cons v a -> Cons v a #

(-) :: Cons v a -> Cons v a -> Cons v a #

(*) :: Cons v a -> Cons v a -> Cons v a #

negate :: Cons v a -> Cons v a #

abs :: Cons v a -> Cons v a #

signum :: Cons v a -> Cons v a #

fromInteger :: Integer -> Cons v a #

(Ord a, Ord (v a)) => Ord (Cons v a) Source # 

Methods

compare :: Cons v a -> Cons v a -> Ordering #

(<) :: Cons v a -> Cons v a -> Bool #

(<=) :: Cons v a -> Cons v a -> Bool #

(>) :: Cons v a -> Cons v a -> Bool #

(>=) :: Cons v a -> Cons v a -> Bool #

max :: Cons v a -> Cons v a -> Cons v a #

min :: Cons v a -> Cons v a -> Cons v a #

(Show a, Tup v) => Show (Cons v a) Source # 

Methods

showsPrec :: Int -> Cons v a -> ShowS #

show :: Cons v a -> String #

showList :: [Cons v a] -> ShowS #

(Monoid a, Monoid (v a), Tup v) => Monoid (Cons v a) Source # 

Methods

mempty :: Cons v a #

mappend :: Cons v a -> Cons v a -> Cons v a #

mconcat :: [Cons v a] -> Cons v a #

(Storable a, Storable (v a), Tup v) => Storable (Cons v a) Source # 

Methods

sizeOf :: Cons v a -> Int #

alignment :: Cons v a -> Int #

peekElemOff :: Ptr (Cons v a) -> Int -> IO (Cons v a) #

pokeElemOff :: Ptr (Cons v a) -> Int -> Cons v a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Cons v a) #

pokeByteOff :: Ptr b -> Int -> Cons v a -> IO () #

peek :: Ptr (Cons v a) -> IO (Cons v a) #

poke :: Ptr (Cons v a) -> Cons v a -> IO () #

consUndefTail :: Tup v => Cons v a -> v a Source #

Short constructor functions

vec1 :: a -> Vec1 a Source #

vec2 :: a -> a -> Vec2 a Source #

vec3 :: a -> a -> a -> Vec3 a Source #

vec4 :: a -> a -> a -> a -> Vec4 a Source #

vec5 :: a -> a -> a -> a -> a -> Vec5 a Source #

vec6 :: a -> a -> a -> a -> a -> a -> Vec6 a Source #

vec7 :: a -> a -> a -> a -> a -> a -> a -> Vec7 a Source #

vec8 :: a -> a -> a -> a -> a -> a -> a -> a -> Vec8 a Source #

vec9 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> Vec9 a Source #

"veccing"

vecVec :: Applicative f => f a -> f a -> f (Vec2 a) Source #

vecVec3 :: Applicative f => f a -> f a -> f a -> f (Vec3 a) Source #

vecVec4 :: Applicative f => f a -> f a -> f a -> f a -> f (Vec4 a) Source #

vecVec5 :: Applicative f => f a -> f a -> f a -> f a -> f a -> f (Vec5 a) Source #