pandora-0.1.3: A box of patterns and paradigms

Safe HaskellSafe
LanguageHaskell2010

Pandora.Pattern.Functor.Traversable

Synopsis

Documentation

class Covariant t => Traversable t where Source #

Let f :: (Applicative t, Applicative g) => t a -> u a
Let p :: (Pointable t, Pointable g) => t a -> u a
When providing a new instance, you should ensure it satisfies the four laws:
* Naturality of traversing: g . traverse f ≡ traverse (g . f)
* Naturality of sequencing: f . sequence = sequence . comap f
* Preserving point: p (point x) ≡ point x
* Preserving apply: f (x <*> y) ≡ f x <*> f y

Minimal complete definition

(->>)

Methods

(->>) :: (Pointable u, Applicative u) => t a -> (a -> u b) -> (u :.: t) b Source #

Infix version of traverse

traverse :: (Pointable u, Applicative u) => (a -> u b) -> t a -> (u :.: t) b Source #

Prefix version of ->>

sequence :: (Pointable u, Applicative u) => (t :.: u) a -> (u :.: t) a Source #

The dual of distribute

Instances
Traversable Wye Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Wye

Methods

(->>) :: (Pointable u, Applicative u) => Wye a -> (a -> u b) -> (u :.: Wye) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Wye a -> (u :.: Wye) b Source #

sequence :: (Pointable u, Applicative u) => (Wye :.: u) a -> (u :.: Wye) a Source #

Traversable Edges Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Edges

Methods

(->>) :: (Pointable u, Applicative u) => Edges a -> (a -> u b) -> (u :.: Edges) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Edges a -> (u :.: Edges) b Source #

sequence :: (Pointable u, Applicative u) => (Edges :.: u) a -> (u :.: Edges) a Source #

Traversable Identity Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Identity

Methods

(->>) :: (Pointable u, Applicative u) => Identity a -> (a -> u b) -> (u :.: Identity) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Identity a -> (u :.: Identity) b Source #

sequence :: (Pointable u, Applicative u) => (Identity :.: u) a -> (u :.: Identity) a Source #

Traversable Maybe Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Maybe

Methods

(->>) :: (Pointable u, Applicative u) => Maybe a -> (a -> u b) -> (u :.: Maybe) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Maybe a -> (u :.: Maybe) b Source #

sequence :: (Pointable u, Applicative u) => (Maybe :.: u) a -> (u :.: Maybe) a Source #

Traversable t => Traversable (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

(->>) :: (Pointable u, Applicative u) => Free t a -> (a -> u b) -> (u :.: Free t) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Free t a -> (u :.: Free t) b Source #

sequence :: (Pointable u, Applicative u) => (Free t :.: u) a -> (u :.: Free t) a Source #

Traversable t => Traversable (Jack t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Jack

Methods

(->>) :: (Pointable u, Applicative u) => Jack t a -> (a -> u b) -> (u :.: Jack t) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Jack t a -> (u :.: Jack t) b Source #

sequence :: (Pointable u, Applicative u) => (Jack t :.: u) a -> (u :.: Jack t) a Source #

Traversable (Conclusion e) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Conclusion

Methods

(->>) :: (Pointable u, Applicative u) => Conclusion e a -> (a -> u b) -> (u :.: Conclusion e) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Conclusion e a -> (u :.: Conclusion e) b Source #

sequence :: (Pointable u, Applicative u) => (Conclusion e :.: u) a -> (u :.: Conclusion e) a Source #

Traversable t => Traversable (Cofree t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Cofree

Methods

(->>) :: (Pointable u, Applicative u) => Cofree t a -> (a -> u b) -> (u :.: Cofree t) b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Cofree t a -> (u :.: Cofree t) b Source #

sequence :: (Pointable u, Applicative u) => (Cofree t :.: u) a -> (u :.: Cofree t) a Source #

Traversable (Constant a :: Type -> Type) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Constant

Methods

(->>) :: (Pointable u, Applicative u) => Constant a a0 -> (a0 -> u b) -> (u :.: Constant a) b Source #

traverse :: (Pointable u, Applicative u) => (a0 -> u b) -> Constant a a0 -> (u :.: Constant a) b Source #

sequence :: (Pointable u, Applicative u) => (Constant a :.: u) a0 -> (u :.: Constant a) a0 Source #

(Traversable (t u), Traversable u) => Traversable (Y t u) Source # 
Instance details

Defined in Pandora.Paradigm.Junction.Transformer

Methods

(->>) :: (Pointable u0, Applicative u0) => Y t u a -> (a -> u0 b) -> (u0 :.: Y t u) b Source #

traverse :: (Pointable u0, Applicative u0) => (a -> u0 b) -> Y t u a -> (u0 :.: Y t u) b Source #

sequence :: (Pointable u0, Applicative u0) => (Y t u :.: u0) a -> (u0 :.: Y t u) a Source #

(Traversable t, Traversable u) => Traversable (T t u) Source # 
Instance details

Defined in Pandora.Paradigm.Junction.Transformer

Methods

(->>) :: (Pointable u0, Applicative u0) => T t u a -> (a -> u0 b) -> (u0 :.: T t u) b Source #

traverse :: (Pointable u0, Applicative u0) => (a -> u0 b) -> T t u a -> (u0 :.: T t u) b Source #

sequence :: (Pointable u0, Applicative u0) => (T t u :.: u0) a -> (u0 :.: T t u) a Source #

(Traversable t, Traversable u) => Traversable (U Co Co t u) Source # 
Instance details

Defined in Pandora.Paradigm.Junction.Composition

Methods

(->>) :: (Pointable u0, Applicative u0) => U Co Co t u a -> (a -> u0 b) -> (u0 :.: U Co Co t u) b Source #

traverse :: (Pointable u0, Applicative u0) => (a -> u0 b) -> U Co Co t u a -> (u0 :.: U Co Co t u) b Source #

sequence :: (Pointable u0, Applicative u0) => (U Co Co t u :.: u0) a -> (u0 :.: U Co Co t u) a Source #

(Traversable t, Traversable u, Traversable v) => Traversable (UU Co Co Co t u v) Source # 
Instance details

Defined in Pandora.Paradigm.Junction.Composition

Methods

(->>) :: (Pointable u0, Applicative u0) => UU Co Co Co t u v a -> (a -> u0 b) -> (u0 :.: UU Co Co Co t u v) b Source #

traverse :: (Pointable u0, Applicative u0) => (a -> u0 b) -> UU Co Co Co t u v a -> (u0 :.: UU Co Co Co t u v) b Source #

sequence :: (Pointable u0, Applicative u0) => (UU Co Co Co t u v :.: u0) a -> (u0 :.: UU Co Co Co t u v) a Source #

(Traversable t, Traversable u, Traversable v, Traversable w) => Traversable (UUU Co Co Co Co t u v w) Source # 
Instance details

Defined in Pandora.Paradigm.Junction.Composition

Methods

(->>) :: (Pointable u0, Applicative u0) => UUU Co Co Co Co t u v w a -> (a -> u0 b) -> (u0 :.: UUU Co Co Co Co t u v w) b Source #

traverse :: (Pointable u0, Applicative u0) => (a -> u0 b) -> UUU Co Co Co Co t u v w a -> (u0 :.: UUU Co Co Co Co t u v w) b Source #

sequence :: (Pointable u0, Applicative u0) => (UUU Co Co Co Co t u v w :.: u0) a -> (u0 :.: UUU Co Co Co Co t u v w) a Source #