IsomorphismNondeterminism

trait IsomorphismNondeterminism[F[_], G[_]] extends Nondeterminism[F] with IsomorphismMonad[F, G]
trait IsomorphismBind[F, G]
trait Monad[F]
trait Bind[F]
trait Applicative[F]
trait Apply[F]
trait Functor[F]
class Object
trait Matchable
class Any

Type members

Inherited classlikes

Inherited from
Applicative
trait ApplyLaw
Inherited from
Apply
trait BindLaw
Inherited from
Bind
Inherited from
Functor
trait MonadLaw
Inherited from
Monad

Value members

Concrete methods

override
def chooseAny[A](head: F[A], tail: IList[F[A]]): F[(A, IList[F[A]])]
Definition Classes

Inherited methods

def aggregate[A : Monoid](fs: IList[F[A]]): F[A]

Nondeterministically sequence fs, collecting the results using a Monoid.

Nondeterministically sequence fs, collecting the results using a Monoid.

Inherited from
Nondeterminism
def aggregate1[A : Semigroup](fs: NonEmptyList[F[A]]): F[A]
Inherited from
Nondeterminism
def aggregateCommutative[A : Monoid](fs: IList[F[A]]): F[A]

Nondeterministically sequence fs, collecting the results using a commutative Monoid.

Nondeterministically sequence fs, collecting the results using a commutative Monoid.

Inherited from
Nondeterminism
def aggregateCommutative1[A : Semigroup](fs: NonEmptyList[F[A]]): F[A]
Inherited from
Nondeterminism
override
def ap[A, B](fa: => F[A])(f: => F[A => B]): F[B]
def ap2[A, B, C](fa: => F[A], fb: => F[B])(f: F[(A, B) => C]): F[C]
Inherited from
Apply
def ap3[A, B, C, D](fa: => F[A], fb: => F[B], fc: => F[C])(f: F[(A, B, C) => D]): F[D]
Inherited from
Apply
def ap4[A, B, C, D, E](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D])(f: F[(A, B, C, D) => E]): F[E]
Inherited from
Apply
def ap5[A, B, C, D, E, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E])(f: F[(A, B, C, D, E) => R]): F[R]
Inherited from
Apply
def ap6[A, B, C, D, E, FF, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF])(f: F[(A, B, C, D, E, FF) => R]): F[R]
Inherited from
Apply
def ap7[A, B, C, D, E, FF, G, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G])(f: F[(A, B, C, D, E, FF, G) => R]): F[R]
Inherited from
Apply
def ap8[A, B, C, D, E, FF, G, H, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G], fh: => F[H])(f: F[(A, B, C, D, E, FF, G, H) => R]): F[R]
Inherited from
Apply
def apF[A, B](f: => F[A => B]): F[A] => F[B]

Flipped variant of ap.

Flipped variant of ap.

Inherited from
Apply
def apply[A, B](fa: F[A])(f: A => B): F[B]

Alias for map.

Alias for map.

Inherited from
Functor
def apply10[A, B, C, D, E, FF, G, H, I, J, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G], fh: => F[H], fi: => F[I], fj: => F[J])(f: (A, B, C, D, E, FF, G, H, I, J) => R): F[R]
Inherited from
Apply
def apply11[A, B, C, D, E, FF, G, H, I, J, K, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G], fh: => F[H], fi: => F[I], fj: => F[J], fk: => F[K])(f: (A, B, C, D, E, FF, G, H, I, J, K) => R): F[R]
Inherited from
Apply
def apply12[A, B, C, D, E, FF, G, H, I, J, K, L, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G], fh: => F[H], fi: => F[I], fj: => F[J], fk: => F[K], fl: => F[L])(f: (A, B, C, D, E, FF, G, H, I, J, K, L) => R): F[R]
Inherited from
Apply
override
def apply2[A, B, C](fa: => F[A], fb: => F[B])(f: (A, B) => C): F[C]
def apply3[A, B, C, D](fa: => F[A], fb: => F[B], fc: => F[C])(f: (A, B, C) => D): F[D]
Inherited from
Apply
def apply4[A, B, C, D, E](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D])(f: (A, B, C, D) => E): F[E]
Inherited from
Apply
def apply5[A, B, C, D, E, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E])(f: (A, B, C, D, E) => R): F[R]
Inherited from
Apply
def apply6[A, B, C, D, E, FF, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF])(f: (A, B, C, D, E, FF) => R): F[R]
Inherited from
Apply
def apply7[A, B, C, D, E, FF, G, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G])(f: (A, B, C, D, E, FF, G) => R): F[R]
Inherited from
Apply
def apply8[A, B, C, D, E, FF, G, H, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G], fh: => F[H])(f: (A, B, C, D, E, FF, G, H) => R): F[R]
Inherited from
Apply
def apply9[A, B, C, D, E, FF, G, H, I, R](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E], ff: => F[FF], fg: => F[G], fh: => F[H], fi: => F[I])(f: (A, B, C, D, E, FF, G, H, I) => R): F[R]
Inherited from
Apply
def applyApplicative: Applicative[[α] =>> F[α] \/ α]

Add a unit to any Apply to form an Applicative.

Add a unit to any Apply to form an Applicative.

Inherited from
Apply
Inherited from
Apply
final
def applying1[Z, A1](f: A1 => Z)(implicit a1: F[A1]): F[Z]
Inherited from
Apply
final
def applying2[Z, A1, A2](f: (A1, A2) => Z)(implicit a1: F[A1], a2: F[A2]): F[Z]
Inherited from
Apply
final
def applying3[Z, A1, A2, A3](f: (A1, A2, A3) => Z)(implicit a1: F[A1], a2: F[A2], a3: F[A3]): F[Z]
Inherited from
Apply
final
def applying4[Z, A1, A2, A3, A4](f: (A1, A2, A3, A4) => Z)(implicit a1: F[A1], a2: F[A2], a3: F[A3], a4: F[A4]): F[Z]
Inherited from
Apply
def bicompose[G[_, _] : Bifunctor]: Bifunctor[[α, β] =>> F[G[α, β]]]

The composition of Functor F and Bifunctor G, [x, y]F[G[x, y]], is a Bifunctor

The composition of Functor F and Bifunctor G, [x, y]F[G[x, y]], is a Bifunctor

Inherited from
Functor
override
def bind[A, B](fa: F[A])(f: A => F[B]): F[B]
Definition Classes
Inherited from
IsomorphismBind
Inherited from
Bind
def both[A, B](a: F[A], b: F[B]): F[(A, B)]

Obtain results from both a and b, nondeterministically ordering their effects.

Obtain results from both a and b, nondeterministically ordering their effects.

Inherited from
Nondeterminism
def choose[A, B](a: F[A], b: F[B]): F[(A, F[B]) \/ (F[A], B)]

A commutative operation which chooses nondeterministically to obtain a value from either a or b. If a 'wins', a 'residual' context for b is returned; if b wins, a residual context for a is returned. The residual is useful for various instances like Future, which may race the two computations and require a residual to ensure the result of the 'losing' computation is not discarded.

A commutative operation which chooses nondeterministically to obtain a value from either a or b. If a 'wins', a 'residual' context for b is returned; if b wins, a residual context for a is returned. The residual is useful for various instances like Future, which may race the two computations and require a residual to ensure the result of the 'losing' computation is not discarded.

This function can be defined in terms of chooseAny or vice versa. The default implementation calls chooseAny with a two-element list and uses the Functor for F to fix up types.

Inherited from
Nondeterminism
def chooseAny[A](a: IList[F[A]]): Option[F[(A, IList[F[A]])]]

A commutative operation which chooses nondeterministically to obtain a value from any of the elements of as. In the language of posets, this constructs an antichain (a set of elements which are all incomparable) in the effect poset for this computation.

A commutative operation which chooses nondeterministically to obtain a value from any of the elements of as. In the language of posets, this constructs an antichain (a set of elements which are all incomparable) in the effect poset for this computation.

Returns

None, if the input is empty.

Inherited from
Nondeterminism
def compose[G[_]](implicit G0: Functor[G]): Functor[[α] =>> F[G[α]]]

The composition of Functors F and G, [x]F[G[x]], is a Functor

The composition of Functors F and G, [x]F[G[x]], is a Functor

Inherited from
Functor
def compose[G[_]](implicit G0: Apply[G]): Apply[[α] =>> F[G[α]]]

The composition of Applys F and G, [x]F[G[x]], is a Apply

The composition of Applys F and G, [x]F[G[x]], is a Apply

Inherited from
Apply
def compose[G[_]](implicit G0: Applicative[G]): Applicative[[α] =>> F[G[α]]]

The composition of Applicatives F and G, [x]F[G[x]], is an Applicative

The composition of Applicatives F and G, [x]F[G[x]], is an Applicative

Inherited from
Applicative
def counzip[A, B](a: F[A] \/ F[B]): F[A \/ B]
Inherited from
Functor
def discardLeft[A, B](fa: => F[A], fb: => F[B]): F[B]

Combine fa and fb according to Apply[F] with a function that discards the A(s)

Combine fa and fb according to Apply[F] with a function that discards the A(s)

Inherited from
Apply
def discardRight[A, B](fa: => F[A], fb: => F[B]): F[A]

Combine fa and fb according to Apply[F] with a function that discards the B(s)

Combine fa and fb according to Apply[F] with a function that discards the B(s)

Inherited from
Apply
def filterM[A](l: IList[A])(f: A => F[Boolean]): F[IList[A]]

Filter l according to an applicative predicate.

Filter l according to an applicative predicate.

Inherited from
Applicative
def filterM[A](l: List[A])(f: A => F[Boolean]): F[List[A]]

Filter l according to an applicative predicate.

Filter l according to an applicative predicate.

Inherited from
Applicative
def filterM[A, B](map: A ==>> B)(f: B => F[Boolean])(implicit O: Order[A]): F[A ==>> B]

Filter map according to an applicative predicate. *

Filter map according to an applicative predicate. *

Inherited from
Applicative
override

An Applicative for F in which effects happen in the opposite order.

An Applicative for F in which effects happen in the opposite order.

Definition Classes
Inherited from
Applicative
def forever[A, B](fa: F[A]): F[B]

Repeats an applicative action infinitely

Repeats an applicative action infinitely

Inherited from
Apply
def fpair[A](fa: F[A]): F[(A, A)]

Twin all As in fa.

Twin all As in fa.

Inherited from
Functor
def fproduct[A, B](fa: F[A])(f: A => B): F[(A, B)]

Pair all As in fa with the result of function application.

Pair all As in fa with the result of function application.

Inherited from
Functor
Inherited from
Functor
def gather[A](fs: IList[F[A]]): F[IList[A]]

Nondeterministically gather results from the given sequence of actions. This function is the nondeterministic analogue of sequence and should behave identically to sequence so long as there is no interaction between the effects being gathered. However, unlike sequence, which decides on a total order of effects, the effects in a gather are unordered with respect to each other.

Nondeterministically gather results from the given sequence of actions. This function is the nondeterministic analogue of sequence and should behave identically to sequence so long as there is no interaction between the effects being gathered. However, unlike sequence, which decides on a total order of effects, the effects in a gather are unordered with respect to each other.

Although the effects are unordered, we ensure the order of results matches the order of the input sequence. Also see gatherUnordered.

Inherited from
Nondeterminism
def gather1[A](fs: NonEmptyList[F[A]]): F[NonEmptyList[A]]
Inherited from
Nondeterminism
def gatherUnordered[A](fs: IList[F[A]]): F[IList[A]]

Nondeterministically gather results from the given sequence of actions to a list. Same as calling reduceUnordered with the List Monoid.

Nondeterministically gather results from the given sequence of actions to a list. Same as calling reduceUnordered with the List Monoid.

To preserve the order of the output list while allowing nondetermininstic ordering of effects, use gather.

Inherited from
Nondeterminism
def gatherUnordered1[A](fs: NonEmptyList[F[A]]): F[NonEmptyList[A]]
Inherited from
Nondeterminism
def icompose[G[_]](implicit G0: Contravariant[G]): Contravariant[[α] =>> F[G[α]]]

The composition of Functor F and Contravariant G, [x]F[G[x]], is contravariant.

The composition of Functor F and Contravariant G, [x]F[G[x]], is contravariant.

Inherited from
Functor
def ifM[B](value: F[Boolean], ifTrue: => F[B], ifFalse: => F[B]): F[B]

if lifted into a binding. Unlike lift3((t,c,a)=>if(t)c else a), this will only include context from the chosen of ifTrue and ifFalse, not the other.

if lifted into a binding. Unlike lift3((t,c,a)=>if(t)c else a), this will only include context from the chosen of ifTrue and ifFalse, not the other.

Inherited from
Bind
def iso: IsoFunctor[F, G]
Inherited from
IsomorphismFunctor
def iterateUntil[A](f: F[A])(p: A => Boolean): F[A]

Execute an action repeatedly until its result satisfies the given predicate and return that result, discarding all others.

Execute an action repeatedly until its result satisfies the given predicate and return that result, discarding all others.

Inherited from
Monad
def iterateWhile[A](f: F[A])(p: A => Boolean): F[A]

Execute an action repeatedly until its result fails to satisfy the given predicate and return that result, discarding all others.

Execute an action repeatedly until its result fails to satisfy the given predicate and return that result, discarding all others.

Inherited from
Monad
def join[A](ffa: F[F[A]]): F[A]

Sequence the inner F of FFA after the outer F, forming a single F[A].

Sequence the inner F of FFA after the outer F, forming a single F[A].

Inherited from
Bind
def lift[A, B](f: A => B): F[A] => F[B]

Lift f into F.

Lift f into F.

Inherited from
Functor
def lift10[A, B, C, D, E, FF, G, H, I, J, R](f: (A, B, C, D, E, FF, G, H, I, J) => R): (F[A], F[B], F[C], F[D], F[E], F[FF], F[G], F[H], F[I], F[J]) => F[R]
Inherited from
Apply
def lift11[A, B, C, D, E, FF, G, H, I, J, K, R](f: (A, B, C, D, E, FF, G, H, I, J, K) => R): (F[A], F[B], F[C], F[D], F[E], F[FF], F[G], F[H], F[I], F[J], F[K]) => F[R]
Inherited from
Apply
def lift12[A, B, C, D, E, FF, G, H, I, J, K, L, R](f: (A, B, C, D, E, FF, G, H, I, J, K, L) => R): (F[A], F[B], F[C], F[D], F[E], F[FF], F[G], F[H], F[I], F[J], F[K], F[L]) => F[R]
Inherited from
Apply
def lift2[A, B, C](f: (A, B) => C): (F[A], F[B]) => F[C]
Inherited from
Apply
def lift3[A, B, C, D](f: (A, B, C) => D): (F[A], F[B], F[C]) => F[D]
Inherited from
Apply
def lift4[A, B, C, D, E](f: (A, B, C, D) => E): (F[A], F[B], F[C], F[D]) => F[E]
Inherited from
Apply
def lift5[A, B, C, D, E, R](f: (A, B, C, D, E) => R): (F[A], F[B], F[C], F[D], F[E]) => F[R]
Inherited from
Apply
def lift6[A, B, C, D, E, FF, R](f: (A, B, C, D, E, FF) => R): (F[A], F[B], F[C], F[D], F[E], F[FF]) => F[R]
Inherited from
Apply
def lift7[A, B, C, D, E, FF, G, R](f: (A, B, C, D, E, FF, G) => R): (F[A], F[B], F[C], F[D], F[E], F[FF], F[G]) => F[R]
Inherited from
Apply
def lift8[A, B, C, D, E, FF, G, H, R](f: (A, B, C, D, E, FF, G, H) => R): (F[A], F[B], F[C], F[D], F[E], F[FF], F[G], F[H]) => F[R]
Inherited from
Apply
def lift9[A, B, C, D, E, FF, G, H, I, R](f: (A, B, C, D, E, FF, G, H, I) => R): (F[A], F[B], F[C], F[D], F[E], F[FF], F[G], F[H], F[I]) => F[R]
Inherited from
Apply
def liftReducer[A, B](implicit r: Reducer[A, B]): Reducer[F[A], F[B]]
Inherited from
Apply
override
def map[A, B](fa: F[A])(f: A => B): F[B]
Definition Classes
Inherited from
IsomorphismFunctor
def mapBoth[A, B, C](a: F[A], b: F[B])(f: (A, B) => C): F[C]

Apply a function to the results of a and b, nondeterminstically ordering their effects.

Apply a function to the results of a and b, nondeterminstically ordering their effects.

Inherited from
Nondeterminism
def mapply[A, B](a: A)(f: F[A => B]): F[B]

Lift apply(a), and apply the result to f.

Lift apply(a), and apply the result to f.

Inherited from
Functor
Inherited from
Monad
def mproduct[A, B](fa: F[A])(f: A => F[B]): F[(A, B)]

Pair A with the result of function application.

Pair A with the result of function application.

Inherited from
Bind
def nmap2[A, B, C](a: F[A], b: F[B])(f: (A, B) => C): F[C]

Apply a function to 2 results, nondeterminstically ordering their effects, alias of mapBoth

Apply a function to 2 results, nondeterminstically ordering their effects, alias of mapBoth

Inherited from
Nondeterminism
def nmap3[A, B, C, R](a: F[A], b: F[B], c: F[C])(f: (A, B, C) => R): F[R]

Apply a function to 3 results, nondeterminstically ordering their effects

Apply a function to 3 results, nondeterminstically ordering their effects

Inherited from
Nondeterminism
def nmap4[A, B, C, D, R](a: F[A], b: F[B], c: F[C], d: F[D])(f: (A, B, C, D) => R): F[R]

Apply a function to 4 results, nondeterminstically ordering their effects

Apply a function to 4 results, nondeterminstically ordering their effects

Inherited from
Nondeterminism
def nmap5[A, B, C, D, E, R](a: F[A], b: F[B], c: F[C], d: F[D], e: F[E])(f: (A, B, C, D, E) => R): F[R]

Apply a function to 5 results, nondeterminstically ordering their effects

Apply a function to 5 results, nondeterminstically ordering their effects

Inherited from
Nondeterminism
def nmap6[A, B, C, D, E, FF, R](a: F[A], b: F[B], c: F[C], d: F[D], e: F[E], ff: F[FF])(f: (A, B, C, D, E, FF) => R): F[R]

Apply a function to 6 results, nondeterminstically ordering their effects

Apply a function to 6 results, nondeterminstically ordering their effects

Inherited from
Nondeterminism
def par: Par[F]

A lawful implementation of this that is isomorphic up to the methods defined on Applicative allowing for optimised parallel implementations that would otherwise violate laws of more specific typeclasses (e.g. Monad).

A lawful implementation of this that is isomorphic up to the methods defined on Applicative allowing for optimised parallel implementations that would otherwise violate laws of more specific typeclasses (e.g. Monad).

Inherited from
Applicative
def parallel: Applicative[[α] =>> F[α] @@ Parallel]
Inherited from
Nondeterminism
def plusA[A](x: => F[A], y: => F[A])(implicit sa: Semigroup[A]): F[A]

Semigroups can be added within an Applicative

Semigroups can be added within an Applicative

Inherited from
Applicative
def point[A](a: => A): F[A]
def product[G[_]](implicit G0: Functor[G]): Functor[[α] =>> (F[α], G[α])]

The product of Functors F and G, [x](F[x], G[x]]), is a Functor

The product of Functors F and G, [x](F[x], G[x]]), is a Functor

Inherited from
Functor
def product[G[_]](implicit G0: Apply[G]): Apply[[α] =>> (F[α], G[α])]

The product of Applys F and G, [x](F[x], G[x]]), is a Apply

The product of Applys F and G, [x](F[x], G[x]]), is a Apply

Inherited from
Apply
def product[G[_]](implicit G0: Bind[G]): Bind[[α] =>> (F[α], G[α])]

The product of Bind F and G, [x](F[x], G[x]]), is a Bind

The product of Bind F and G, [x](F[x], G[x]]), is a Bind

Inherited from
Bind
def product[G[_]](implicit G0: Applicative[G]): Applicative[[α] =>> (F[α], G[α])]

The product of Applicatives F and G, [x](F[x], G[x]]), is an Applicative

The product of Applicatives F and G, [x](F[x], G[x]]), is an Applicative

Inherited from
Applicative
def product[G[_]](implicit G0: Monad[G]): Monad[[α] =>> (F[α], G[α])]

The product of Monad F and G, [x](F[x], G[x]]), is a Monad

The product of Monad F and G, [x](F[x], G[x]]), is a Monad

Inherited from
Monad
final
def pure[A](a: => A): F[A]
Inherited from
Applicative
def reduceUnordered[A, M](fs: IList[F[A]])(implicit R: Reducer[A, M], M: Monoid[M]): F[M]

Nondeterministically gather results from the given sequence of actions. The result will be arbitrarily reordered, depending on the order results come back in a sequence of calls to chooseAny.

Nondeterministically gather results from the given sequence of actions. The result will be arbitrarily reordered, depending on the order results come back in a sequence of calls to chooseAny.

Inherited from
Nondeterminism
def replicateM[A](n: Int, fa: F[A]): F[IList[A]]

Performs the action n times, returning the list of results.

Performs the action n times, returning the list of results.

Inherited from
Applicative
def replicateM_[A](n: Int, fa: F[A]): F[Unit]

Performs the action n times, returning nothing.

Performs the action n times, returning nothing.

Inherited from
Applicative
def sequence[A, G[_] : Traverse](as: G[F[A]]): F[G[A]]
Inherited from
Applicative
def sequence1[A, G[_] : Traverse1](as: G[F[A]]): F[G[A]]
Inherited from
Apply
def strengthL[A, B](a: A, f: F[B]): F[(A, B)]

Inject a to the left of Bs in f.

Inject a to the left of Bs in f.

Inherited from
Functor
def strengthR[A, B](f: F[A], b: B): F[(A, B)]

Inject b to the right of As in f.

Inject b to the right of As in f.

Inherited from
Functor
def traverse[A, G[_], B](value: G[A])(f: A => F[B])(implicit G: Traverse[G]): F[G[B]]
Inherited from
Applicative
def traverse1[A, G[_], B](value: G[A])(f: A => F[B])(implicit G: Traverse1[G]): F[G[B]]
Inherited from
Apply
def tuple2[A, B](fa: => F[A], fb: => F[B]): F[(A, B)]
Inherited from
Apply
def tuple3[A, B, C](fa: => F[A], fb: => F[B], fc: => F[C]): F[(A, B, C)]
Inherited from
Apply
def tuple4[A, B, C, D](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D]): F[(A, B, C, D)]
Inherited from
Apply
def tuple5[A, B, C, D, E](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D], fe: => F[E]): F[(A, B, C, D, E)]
Inherited from
Apply
def unfoldrOpt[S, A, B](seed: S)(f: S => Maybe[(F[A], S)])(implicit R: Reducer[A, B]): Maybe[F[B]]

Unfold seed to the right and combine effects left-to-right, using the given Reducer to combine values. Implementations may override this method to not unfold more than is necessary to determine the result.

Unfold seed to the right and combine effects left-to-right, using the given Reducer to combine values. Implementations may override this method to not unfold more than is necessary to determine the result.

Inherited from
Apply
def unlessM[A](cond: Boolean)(f: => F[A]): F[Unit]

Returns the given argument if cond is false, otherwise, unit lifted into F.

Returns the given argument if cond is false, otherwise, unit lifted into F.

Inherited from
Applicative
def untilM[G[_], A](f: F[A], cond: => F[Boolean])(implicit G: MonadPlus[G]): F[G[A]]

Execute an action repeatedly until the Boolean condition returns true. The condition is evaluated after the loop body. Collects results into an arbitrary MonadPlus value, such as a List.

Execute an action repeatedly until the Boolean condition returns true. The condition is evaluated after the loop body. Collects results into an arbitrary MonadPlus value, such as a List.

Inherited from
Monad
def untilM_[A](f: F[A], cond: => F[Boolean]): F[Unit]

Execute an action repeatedly until the Boolean condition returns true. The condition is evaluated after the loop body. Discards results.

Execute an action repeatedly until the Boolean condition returns true. The condition is evaluated after the loop body. Discards results.

Inherited from
Monad
def void[A](fa: F[A]): F[Unit]

Empty fa of meaningful pure values, preserving its structure.

Empty fa of meaningful pure values, preserving its structure.

Inherited from
Functor
def whenM[A](cond: Boolean)(f: => F[A]): F[Unit]

Returns the given argument if cond is true, otherwise, unit lifted into F.

Returns the given argument if cond is true, otherwise, unit lifted into F.

Inherited from
Applicative
def whileM[G[_], A](p: F[Boolean], body: => F[A])(implicit G: MonadPlus[G]): F[G[A]]

Execute an action repeatedly as long as the given Boolean expression returns true. The condition is evaluated before the loop body. Collects the results into an arbitrary MonadPlus value, such as a List.

Execute an action repeatedly as long as the given Boolean expression returns true. The condition is evaluated before the loop body. Collects the results into an arbitrary MonadPlus value, such as a List.

Inherited from
Monad
def whileM_[A](p: F[Boolean], body: => F[A]): F[Unit]

Execute an action repeatedly as long as the given Boolean expression returns true. The condition is evaluated before the loop body. Discards results.

Execute an action repeatedly as long as the given Boolean expression returns true. The condition is evaluated before the loop body. Discards results.

Inherited from
Monad
def widen[A, B](fa: F[A])(implicit ev: Liskov[A, B]): F[B]

Functors are covariant by nature, so we can treat an F[A] as an F[B] if A is a subtype of B.

Functors are covariant by nature, so we can treat an F[A] as an F[B] if A is a subtype of B.

Inherited from
Functor
final
def xderiving0[Z](z: => Z): F[Z]
Inherited from
InvariantApplicative
final
def xderiving1[Z, A1](f: A1 => Z, g: Z => A1)(implicit a1: F[A1]): F[Z]
Inherited from
InvariantApplicative
final
def xderiving2[Z, A1, A2](f: (A1, A2) => Z, g: Z => (A1, A2))(implicit a1: F[A1], a2: F[A2]): F[Z]
Inherited from
InvariantApplicative
final
def xderiving3[Z, A1, A2, A3](f: (A1, A2, A3) => Z, g: Z => (A1, A2, A3))(implicit a1: F[A1], a2: F[A2], a3: F[A3]): F[Z]
Inherited from
InvariantApplicative
final
def xderiving4[Z, A1, A2, A3, A4](f: (A1, A2, A3, A4) => Z, g: Z => (A1, A2, A3, A4))(implicit a1: F[A1], a2: F[A2], a3: F[A3], a4: F[A4]): F[Z]
Inherited from
InvariantApplicative
override
def xmap[A, B](ma: F[A], f: A => B, g: B => A): F[B]
def xmapb[A, B](ma: F[A])(b: Bijection[A, B]): F[B]

Converts ma to a value of type F[B] using the provided bijection.

Converts ma to a value of type F[B] using the provided bijection.

Inherited from
InvariantFunctor
def xmapi[A, B](ma: F[A])(iso: IsoSet[A, B]): F[B]

Converts ma to a value of type F[B] using the provided isomorphism.

Converts ma to a value of type F[B] using the provided isomorphism.

Inherited from
InvariantFunctor
override
def xproduct1[Z, A1](a1: => F[A1])(f: A1 => Z, g: Z => A1): F[Z]
override
def xproduct2[Z, A1, A2](a1: => F[A1], a2: => F[A2])(f: (A1, A2) => Z, g: Z => (A1, A2)): F[Z]
override
def xproduct3[Z, A1, A2, A3](a1: => F[A1], a2: => F[A2], a3: => F[A3])(f: (A1, A2, A3) => Z, g: Z => (A1, A2, A3)): F[Z]
override
def xproduct4[Z, A1, A2, A3, A4](a1: => F[A1], a2: => F[A2], a3: => F[A3], a4: => F[A4])(f: (A1, A2, A3, A4) => Z, g: Z => (A1, A2, A3, A4)): F[Z]

Implicits

Implicits

implicit