skulk-0.1.0.0: Eclectic collection of utility functions

Skulk.Deep

Description

Collection of convenience functions for dealing with nested monadic structures.

Synopsis

Documentation

reduceABA :: (Applicative a, Monad a, Traversable b) => a (b (a x)) -> a (b x) Source

Reduces `A (B (A x))` to `A (B x)`.

reduceBAB :: (Applicative a, Traversable b, Monad b) => b (a (b x)) -> a (b x) Source

Reduces `B (A (B x))` to `A (B x)`.

reduceABAB :: (Applicative a, Monad a, Traversable b, Monad b) => a (b (a (b x))) -> a (b x) Source

Reduces `A (B (A (B x)))` to `A (B x)`.

reduceBABA :: (Applicative a, Monad a, Traversable b, Monad b) => b (a (b (a x))) -> a (b x) Source

Reduces `B (A (B (A x)))` to `A (B x)`.

(<\$\$>) :: (Functor a, Functor b) => (x -> y) -> a (b x) -> a (b y) infixl 4 Source

"Deep" `fmap` for mapping over nested functors.

(>>>=) :: (Applicative a, Monad a, Traversable b, Monad b) => a (b x) -> (x -> a (b y)) -> a (b y) infixl 1 Source

Variety of "deep bind" for chaining operations on nested data structures.

(>>==) :: (Functor a, Functor b, Monad b) => a (b x) -> (x -> b y) -> a (b y) infixl 1 Source

Variety of "deep bind" for chaining operations on nested data structures.

(>=>=) :: (Applicative a, Monad a, Traversable b) => a (b x) -> (x -> a y) -> a (b y) infixl 1 Source

Variety of "deep bind" for chaining operations on nested data structures.