tup-functor-0.3.0.0: Homogeneous tuples

Safe HaskellSafe-Inferred
LanguageHaskell98

Data.Tup.Class

Contents

Synopsis

the Tup class

class (Functor f, Applicative f, Foldable f, Traversable f) => Tup f where Source

Minimal complete definition

Nothing

Methods

tupSize Source

Arguments

:: f a 
-> Int

equivalent to length . tupToList

tupToList Source

Arguments

:: f a 
-> [a]

equivalent to Foldable.toList

tupFromList :: [a] -> f a Source

tupProxy :: f a -> Proxy a Source

tupUndef Source

Arguments

:: f a 
-> a

poor man's version of tupProxy

constantTup :: a -> f a Source

undefinedTup Source

Arguments

:: f a

when possible / makes sense, you can still pattern-patch on the constructor

Misc

maybeTupFromList :: Tup f => [a] -> Maybe (f a) Source

Safe version of tupFromList.

transposeTup :: (Tup f, Tup g) => f (g a) -> g (f a) Source

Transpose a Tup of Tups.

Concatenation

maybeTupConcat :: (Tup f, Tup g, Tup h) => f a -> g a -> Maybe (h a) Source

Safe concatenation (going through lists)

unsafeTupConcat :: (Tup f, Tup g, Tup h) => f a -> g a -> h a Source

Unsafe concatenation

Conversion

maybeConvertTup :: (Tup f, Tup g) => f a -> Maybe (g a) Source

Safe conversion between different Tup implementations

unsafeConvertTup :: (Tup f, Tup g) => f a -> g a Source

Unsafe conversion

zipping (only using the Applicative structure)

zipTupWith :: Applicative f => (a -> b -> c) -> f a -> f b -> f c Source

zipTupWith3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d Source

zipTupWith4 :: Applicative f => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e Source

zipTup :: Applicative f => f a -> f b -> f (a, b) Source

zipTup3 :: Applicative f => f a -> f b -> f c -> f (a, b, c) Source

zipTup4 :: Applicative f => f a -> f b -> f c -> f d -> f (a, b, c, d) Source