Copyright | (c) 2014 Justus Sagemüller |
---|---|
License | GPL v3 (see COPYING) |
Maintainer | (@) jsag $ hvl.no |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Synopsis
- class (Category k, Category l, Functor s l l, Functor t k k) => Traversable s t k l | s k l -> t, t k l -> s, s t k -> l, s t l -> k where
- type TraversalObject k t b :: Constraint
- traverse :: (Monoidal f k l, Object l a, Object l (s a), ObjectPair k b (t b), ObjectPair l (f b) (f (t b)), TraversalObject k t b) => (a `l` f b) -> s a `l` f (t b)
- mapM :: (k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => (a `k` m b) -> t a `k` m (t b)
- sequence :: (k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => t (f a) `k` f (t a)
- forM :: forall s t k m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> (a `l` m b) -> m (t b)
- type EndoTraversable t k = Traversable t t k k
- haskTraverse :: (Traversable t, Monoidal f (->) (->)) => (a -> f b) -> t a -> f (t b)
Documentation
class (Category k, Category l, Functor s l l, Functor t k k) => Traversable s t k l | s k l -> t, t k l -> s, s t k -> l, s t l -> k where Source #
type TraversalObject k t b :: Constraint Source #
type TraversalObject k t b = ()
traverse :: (Monoidal f k l, Object l a, Object l (s a), ObjectPair k b (t b), ObjectPair l (f b) (f (t b)), TraversalObject k t b) => (a `l` f b) -> s a `l` f (t b) Source #
mapM :: (k ~ l, s ~ t, Applicative m k k, Object k a, Object k (t a), ObjectPair k b (t b), ObjectPair k (m b) (m (t b)), TraversalObject k t b) => (a `k` m b) -> t a `k` m (t b) Source #
traverse
, restricted to endofunctors. May be more efficient to implement.
sequence :: (k ~ l, s ~ t, Monoidal f k k, ObjectPair k a (t a), ObjectPair k (f a) (f (t a)), Object k (t (f a)), TraversalObject k t a) => t (f a) `k` f (t a) Source #
Instances
(Arrow k (->), WellPointed k, Function k, Functor Maybe k k) => Traversable Maybe Maybe k k Source # | |
Defined in Data.Traversable.Constrained type TraversalObject k Maybe b Source # traverse :: (Monoidal f k k, Object k a, Object k (Maybe a), ObjectPair k b (Maybe b), ObjectPair k (f b) (f (Maybe b)), TraversalObject k Maybe b) => k a (f b) -> k (Maybe a) (f (Maybe b)) Source # mapM :: (k ~ k, Maybe ~ Maybe, Applicative m k k, Object k a, Object k (Maybe a), ObjectPair k b (Maybe b), ObjectPair k (m b) (m (Maybe b)), TraversalObject k Maybe b) => k a (m b) -> k (Maybe a) (m (Maybe b)) Source # sequence :: (k ~ k, Maybe ~ Maybe, Monoidal f k k, ObjectPair k a (Maybe a), ObjectPair k (f a) (f (Maybe a)), Object k (Maybe (f a)), TraversalObject k Maybe a) => k (Maybe (f a)) (f (Maybe a)) Source # | |
(Arrow k (->), WellPointed k, Function k, Functor [] k k) => Traversable [] [] k k Source # | |
Defined in Data.Traversable.Constrained type TraversalObject k [] b Source # traverse :: (Monoidal f k k, Object k a, Object k [a], ObjectPair k b [b], ObjectPair k (f b) (f [b]), TraversalObject k [] b) => k a (f b) -> k [a] (f [b]) Source # mapM :: (k ~ k, [] ~ [], Applicative m k k, Object k a, Object k [a], ObjectPair k b [b], ObjectPair k (m b) (m [b]), TraversalObject k [] b) => k a (m b) -> k [a] (m [b]) Source # sequence :: (k ~ k, [] ~ [], Monoidal f k k, ObjectPair k a [a], ObjectPair k (f a) (f [a]), Object k [f a], TraversalObject k [] a) => k [f a] (f [a]) Source # |
forM :: forall s t k m a b l. (Traversable s t k l, Monoidal m k l, Function l, Object k b, Object k (t b), ObjectPair k b (t b), Object l a, Object l (s a), ObjectPair l (m b) (m (t b)), TraversalObject k t b) => s a -> (a `l` m b) -> m (t b) Source #
type EndoTraversable t k = Traversable t t k k Source #
A traversable that can be used with mapM
.
haskTraverse :: (Traversable t, Monoidal f (->) (->)) => (a -> f b) -> t a -> f (t b) Source #
Use this if you want to “derive” a constrained traversable instance from a
given Traversable
one. (You will not be able to simply set
, because the latter requires the Prelude version
of traverse
= traverse
Applicative
, which can not be inferred from the constrained Monoidal
.