Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type family AppMap fs t
- type family Domains fs
- type family Codomains fs
- class MTraversable f fs t | fs -> k where
- mtraverse :: forall t f fs a b fs'. (Applicative t, Unapply a f (Domains fs), Unapply b f (Codomains fs), UnAppMap fs t fs', MTraversable f fs t) => HList fs' -> a -> t b
- msequence :: forall t f as a b. (Applicative t, Unapply a f (Map t as), Unapply b f as, Map t as ~ Domains (SequenceMap as t), as ~ Codomains (SequenceMap as t), MTraversable f (SequenceMap as t) t, SequenceMapId as t) => a -> t b
Documentation
Domain (a -> b) ~ a Domains fs ~ Map Domain fs
class MTraversable f fs t | fs -> k where Source
Traversable
type class, generalisation of Traversable
, Bitraversable
, etc.
Nothing
mtraverseP :: Applicative t => Proxy f -> Proxy fs -> Proxy t -> HList (AppMap fs t) -> (f :$: Domains fs) -> t (f :$: Codomains fs) Source
see mtraverse
MTraversable * Bool ([] *) t | |
MTraversable * Ordering ([] *) t | |
MTraversable * () ([] *) t | |
MTraversable (* -> * -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ((:) * (h -> h') ((:) * (i -> i') ([] *)))))))))) t | |
MTraversable (* -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ((:) * (h -> h') ([] *))))))))) t | |
MTraversable (* -> * -> * -> * -> * -> * -> * -> *) (,,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ((:) * (g -> g') ([] *)))))))) t | |
MTraversable (* -> * -> * -> * -> * -> * -> *) (,,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ((:) * (f -> f') ([] *))))))) t | |
MTraversable (* -> * -> * -> * -> * -> *) (,,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ((:) * (e -> e') ([] *)))))) t | |
MTraversable (* -> * -> * -> * -> *) (,,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ((:) * (d -> d') ([] *))))) t | |
MTraversable (* -> * -> * -> *) (,,) ((:) * (a -> a') ((:) * (b -> b') ((:) * (c -> c') ([] *)))) t | |
MTraversable (* -> * -> *) Either ((:) * (a -> a') ((:) * (b -> b') ([] *))) t | |
MTraversable (* -> * -> *) (,) ((:) * (a -> a') ((:) * (b -> b') ([] *))) t | |
MTraversable (* -> *) [] ((:) * (a -> a') ([] *)) t | |
MTraversable (* -> *) Sum ((:) * (a -> b) ([] *)) t | |
MTraversable (* -> *) Product ((:) * (a -> b) ([] *)) t | |
MTraversable (* -> *) First ((:) * (a -> b) ([] *)) t | |
MTraversable (* -> *) Last ((:) * (a -> b) ([] *)) t | |
MTraversable (* -> *) Maybe ((:) * (a -> a') ([] *)) t |
mtraverse :: forall t f fs a b fs'. (Applicative t, Unapply a f (Domains fs), Unapply b f (Codomains fs), UnAppMap fs t fs', MTraversable f fs t) => HList fs' -> a -> t b Source
Map elements of all type parameters of a structure to an action, evaluate these actions from left to right, and collect the results.
Proxy-less version of mtraverseP
Generalisation of traverse
, bitraverse
, etc.
mtraverse :: HList '[a1 -> f b1, ..., an -> f bn] -> f a1 ... an -> t (f b1 ... bn)
msequence :: forall t f as a b. (Applicative t, Unapply a f (Map t as), Unapply b f as, Map t as ~ Domains (SequenceMap as t), as ~ Codomains (SequenceMap as t), MTraversable f (SequenceMap as t) t, SequenceMapId as t) => a -> t b Source
msequence :: f (t a1) ... (t an) -> t (f a1 ... an)