t

scalaz

# Monad

### Companion object Monad

#### traitMonad[F[_]] extends Applicative[F] with Bind[F]

Monad, an scalaz.Applicative that also supports scalaz.Bind, circumscribed by the monad laws.

Self Type
Monad[F]
Source
Monad.scala
See also

scalaz.Monad.MonadLaw

Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. Monad
2. Bind
3. BindParent
4. Applicative
5. ApplicativeParent
6. Apply
7. ApplyParent
8. Functor
9. InvariantFunctor
10. AnyRef
11. Any
1. Hide All
2. Show All
Visibility
1. Public
2. Protected

### Type Members

1. trait ApplicativeLaw extends ApplyLaw
Definition Classes
Applicative
2. trait ApplyLaw extends FunctorLaw
Definition Classes
Apply
3. trait BindLaw extends ApplyLaw
Definition Classes
Bind
4. trait FunctorLaw extends InvariantFunctorLaw
Definition Classes
Functor
5. trait InvariantFunctorLaw extends AnyRef
Definition Classes
InvariantFunctor
6. trait MonadLaw extends ApplicativeLaw with BindLaw

### Abstract Value Members

1. abstract def bind[A, B](fa: F[A])(f: (A) => F[B]): F[B]

Equivalent to `join(map(fa)(f))`.

Equivalent to `join(map(fa)(f))`.

Definition Classes
Bind
2. abstract def point[A](a: => A): F[A]
Definition Classes
Applicative

### Concrete Value Members

1. final def !=(arg0: Any)
Definition Classes
AnyRef → Any
2. final def ##(): Int
Definition Classes
AnyRef → Any
3. final def ==(arg0: Any)
Definition Classes
AnyRef → Any
4. def ap[A, B](fa: => F[A])(f: => F[(A) => B]): F[B]

Sequence `f`, then `fa`, combining their results by function application.

Sequence `f`, then `fa`, combining their results by function application.

NB: with respect to `apply2` and all other combinators, as well as scalaz.Bind, the `f` action appears to the *left*. So `f` should be the "first" `F`-action to perform. This is in accordance with all other implementations of this typeclass in common use, which are "function first".

Definition Classes
BindApply
5. def ap2[A, B, C](fa: => F[A], fb: => F[B])(f: F[(A, B) => C]): F[C]
Definition Classes
Apply
6. def ap3[A, B, C, D](fa: => F[A], fb: => F[B], fc: => F[C])(f: F[(A, B, C) => D]): F[D]
Definition Classes
Apply
7. 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]
Definition Classes
Apply
8. 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]
Definition Classes
Apply
9. 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]
Definition Classes
Apply
10. 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]
Definition Classes
Apply
11. 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]
Definition Classes
Apply
12. def apF[A, B](f: => F[(A) => B]): (F[A]) => F[B]

Flipped variant of `ap`.

Flipped variant of `ap`.

Definition Classes
Apply
13. def applicativeLaw
Definition Classes
Applicative
14. val applicativeSyntax
Definition Classes
Applicative
15. def apply[A, B](fa: F[A])(f: (A) => B): F[B]

Alias for `map`.

Alias for `map`.

Definition Classes
Functor
16. 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]
Definition Classes
Apply
17. 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]
Definition Classes
Apply
18. 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]
Definition Classes
Apply
19. def apply2[A, B, C](fa: => F[A], fb: => F[B])(f: (A, B) => C): F[C]
Definition Classes
ApplicativeApply
20. def apply3[A, B, C, D](fa: => F[A], fb: => F[B], fc: => F[C])(f: (A, B, C) => D): F[D]
Definition Classes
Apply
21. 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]
Definition Classes
Apply
22. 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]
Definition Classes
Apply
23. 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]
Definition Classes
Apply
24. 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]
Definition Classes
Apply
25. 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]
Definition Classes
Apply
26. 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]
Definition Classes
Apply
27. def applyApplicative: Applicative[[α]\/[F[α], α]]

Add a unit to any Apply to form an Applicative.

Add a unit to any Apply to form an Applicative.

Definition Classes
Apply
28. def applyLaw
Definition Classes
Apply
29. val applySyntax: ApplySyntax[F]
Definition Classes
Apply
30. final def asInstanceOf[T0]: T0
Definition Classes
Any
31. def bicompose[G[_, _]](implicit arg0: Bifunctor[G]): 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

Definition Classes
Functor
32. def bindLaw
Definition Classes
Bind
33. val bindSyntax: BindSyntax[F]
Definition Classes
Bind
34. def clone()
Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.CloneNotSupportedException]) @native()
35. 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

Definition Classes
Applicative
36. 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

Definition Classes
Apply
37. 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

Definition Classes
Functor
38. def counzip[A, B](a: \/[F[A], F[B]]): F[\/[A, B]]
Definition Classes
Functor
39. 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)

Definition Classes
ApplyParent
40. 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)

Definition Classes
ApplyParent
41. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
42. def equals(arg0: AnyRef)
Definition Classes
AnyRef → Any
43. 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.

Definition Classes
Applicative
44. def finalize(): Unit
Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.Throwable])
45. def flip: Applicative[F]

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
ApplicativeApplyParent
46. def forever[A, B](fa: F[A]): F[B]

Repeats a monadic action infinitely

Repeats a monadic action infinitely

Definition Classes
BindApplyParent
47. def fpair[A](fa: F[A]): F[(A, A)]

Twin all `A`s in `fa`.

Twin all `A`s in `fa`.

Definition Classes
Functor
48. def fproduct[A, B](fa: F[A])(f: (A) => B): F[(A, B)]

Pair all `A`s in `fa` with the result of function application.

Pair all `A`s in `fa` with the result of function application.

Definition Classes
Functor
49. def functorLaw
Definition Classes
Functor
50. val functorSyntax: FunctorSyntax[F]
Definition Classes
Functor
51. final def getClass(): Class[_ <: AnyRef]
Definition Classes
AnyRef → Any
Annotations
@native()
52. def hashCode(): Int
Definition Classes
AnyRef → Any
Annotations
@native()
53. 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.

Definition Classes
Functor
54. def ifM[B](value: F[Boolean], ifTrue: => F[B], ifFalse: => F[B]): F[B]

`if` lifted into a binding.

`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.

Definition Classes
Bind
55. def invariantFunctorLaw
Definition Classes
InvariantFunctor
56. val invariantFunctorSyntax
Definition Classes
InvariantFunctor
57. final def isInstanceOf[T0]
Definition Classes
Any
58. 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.

59. 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.

60. 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]`.

Definition Classes
Bind
61. def lift[A, B](f: (A) => B): (F[A]) => F[B]

Lift `f` into `F`.

Lift `f` into `F`.

Definition Classes
Functor
62. 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]
Definition Classes
Apply
63. 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]
Definition Classes
Apply
64. 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]
Definition Classes
Apply
65. def lift2[A, B, C](f: (A, B) => C): (F[A], F[B]) => F[C]
Definition Classes
Apply
66. def lift3[A, B, C, D](f: (A, B, C) => D): (F[A], F[B], F[C]) => F[D]
Definition Classes
Apply
67. def lift4[A, B, C, D, E](f: (A, B, C, D) => E): (F[A], F[B], F[C], F[D]) => F[E]
Definition Classes
Apply
68. 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]
Definition Classes
Apply
69. 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]
Definition Classes
Apply
70. 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]
Definition Classes
Apply
71. 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]
Definition Classes
Apply
72. 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]
Definition Classes
Apply
73. def map[A, B](fa: F[A])(f: (A) => B): F[B]

Lift `f` into `F` and apply to `F[A]`.

Lift `f` into `F` and apply to `F[A]`.

Definition Classes
MonadApplicativeFunctor
74. 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`.

Definition Classes
Functor
75. def monadLaw
76. val monadSyntax: MonadSyntax[F]
77. 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.

Definition Classes
Bind
78. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
79. final def notify(): Unit
Definition Classes
AnyRef
Annotations
@native()
80. final def notifyAll(): Unit
Definition Classes
AnyRef
Annotations
@native()
81. 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.

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).

Definition Classes
ApplicativeParent
82. 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

83. 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

Definition Classes
Bind
84. 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

Definition Classes
Applicative
85. 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

Definition Classes
Apply
86. 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

Definition Classes
Functor
87. final def pure[A](a: => A): F[A]
Definition Classes
Applicative
88. def replicateM[A](n: Int, fa: F[A]): F[List[A]]

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

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

Definition Classes
Applicative
89. def replicateM_[A](n: Int, fa: F[A]): F[Unit]

Performs the action `n` times, returning nothing.

Performs the action `n` times, returning nothing.

Definition Classes
Applicative
90. def sequence[A, G[_]](as: G[F[A]])(implicit arg0: Traverse[G]): F[G[A]]
Definition Classes
Applicative
91. def sequence1[A, G[_]](as: G[F[A]])(implicit arg0: Traverse1[G]): F[G[A]]
Definition Classes
Apply
92. def strengthL[A, B](a: A, f: F[B]): F[(A, B)]

Inject `a` to the left of `B`s in `f`.

Inject `a` to the left of `B`s in `f`.

Definition Classes
Functor
93. def strengthR[A, B](f: F[A], b: B): F[(A, B)]

Inject `b` to the right of `A`s in `f`.

Inject `b` to the right of `A`s in `f`.

Definition Classes
Functor
94. final def synchronized[T0](arg0: => T0): T0
Definition Classes
AnyRef
95. def toString()
Definition Classes
AnyRef → Any
96. def traverse[A, G[_], B](value: G[A])(f: (A) => F[B])(implicit G: Traverse[G]): F[G[B]]
Definition Classes
Applicative
97. def traverse1[A, G[_], B](value: G[A])(f: (A) => F[B])(implicit G: Traverse1[G]): F[G[B]]
Definition Classes
Apply
98. def tuple2[A, B](fa: => F[A], fb: => F[B]): F[(A, B)]
Definition Classes
Apply
99. def tuple3[A, B, C](fa: => F[A], fb: => F[B], fc: => F[C]): F[(A, B, C)]
Definition Classes
Apply
100. def tuple4[A, B, C, D](fa: => F[A], fb: => F[B], fc: => F[C], fd: => F[D]): F[(A, B, C, D)]
Definition Classes
Apply
101. 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)]
Definition Classes
Apply
102. 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.

Definition Classes
Applicative
103. 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`.

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`.

104. def untilM_[A](f: F[A], cond: => F[Boolean]): F[Unit]

Execute an action repeatedly until the `Boolean` condition returns `true`.

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

105. 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.

Definition Classes
Functor
106. final def wait(): Unit
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])
107. final def wait(arg0: Long, arg1: Int): Unit
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])
108. final def wait(arg0: Long): Unit
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException]) @native()
109. 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.

Definition Classes
Applicative
110. 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`.

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

111. def whileM_[A](p: F[Boolean], body: => F[A]): F[Unit]

Execute an action repeatedly as long as the given `Boolean` expression returns `true`.

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

112. def widen[A, B](fa: F[A])(implicit ev: <~<[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`.

Definition Classes
Functor
113. def xmap[A, B](fa: F[A], f: (A) => B, g: (B) => A): F[B]

Converts `ma` to a value of type `F[B]` using the provided functions `f` and `g`.

Converts `ma` to a value of type `F[B]` using the provided functions `f` and `g`.

Definition Classes
FunctorInvariantFunctor
114. 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.

Definition Classes
InvariantFunctor
115. def xmapi[A, B](ma: F[A])(iso: Isomorphism.<=>[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.

Definition Classes
InvariantFunctor