Safe Haskell | Safe |
---|---|

Language | Haskell2010 |

Combinators for monadic profunctors.

## Synopsis

- with :: forall cc p x a. ForallF cc p => (cc (p x) => a) -> a
- with' :: forall cc p x a. ForallF cc p => (cc (p x) => p x a) -> p x a
- withFunctor :: ForallF Functor p => (Functor (p x) => p x a) -> p x a
- withApplicative :: ForallF Applicative p => (Applicative (p x) => p x a) -> p x a
- withAlternative :: ForallF Alternative p => (Alternative (p x) => p x a) -> p x a
- withMonad :: ForallF Monad p => (Monad (p x) => p x a) -> p x a
- replicateP :: forall p x a. (Profunctor p, ForallF Applicative p) => Int -> p x a -> p [x] [a]
- replicateP_ :: (Profunctor p, Applicative (p [x])) => Int -> p x a -> p [x] [a]
- manyP :: forall p x a. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a]
- manyP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a]
- someP :: forall p x a. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a]
- someP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a]
- sepByP :: forall p x a b. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a]
- sepByP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a]
- sepBy1P :: forall p x a b. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a]
- sepBy1P_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a]
- preByP :: forall p x a b. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a]
- preByP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a]

# Basic combinators

withApplicative :: ForallF Applicative p => (Applicative (p x) => p x a) -> p x a Source #

A specialization of `with'`

for `Applicative`

, to avoid `TypeApplications`

where this is possible.

### Usage

In some context with a constraint

available:`ForallF`

`Applicative`

p

`withApplicative`

`$`

(...)`<$>`

(...)`<*>`

(...)

withAlternative :: ForallF Alternative p => (Alternative (p x) => p x a) -> p x a Source #

A specialization of `with'`

for `Alternative`

, to avoid `TypeApplications`

where this is possible.

### Usage

In some context with a constraint

available:`ForallF`

`Alternative`

p

`withAlternative`

`$`

(...)`<|>`

(...)

replicateP :: forall p x a. (Profunctor p, ForallF Applicative p) => Int -> p x a -> p [x] [a] Source #

Bidirectional generalization of `replicateM`

.

replicateP_ :: (Profunctor p, Applicative (p [x])) => Int -> p x a -> p [x] [a] Source #

manyP :: forall p x a. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a] Source #

manyP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a] Source #

someP :: forall p x a. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a] Source #

someP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p [x] [a] Source #

sepByP :: forall p x a b. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a] Source #

sepByP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a] Source #

sepBy1P :: forall p x a b. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a] Source #

sepBy1P_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a] Source #

preByP :: forall p x a b. (Profunctor p, ForallF Alternative p) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a] Source #

preByP_ :: (Profunctor p, Alternative (p [x])) => (([x] -> Bool) -> p [x] ()) -> p x a -> p () b -> p [x] [a] Source #