object ContT extends Serializable
- Source
- ContT.scala
- Alphabetic
- By Inheritance
- ContT
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply[M[_], A, B](fn: ((B) => M[A]) => M[A]): ContT[M, A, B]
Build a computation that makes use of a callback, also known as a continuation.
Build a computation that makes use of a callback, also known as a continuation.
Example:
ContT.apply { callback => for { a <- doFirstThing() b <- doSecondThing(a) c <- callback(b) d <- doFourthThing(c) } yield d }
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def callCC[M[_], A, B, C](f: ((B) => ContT[M, A, C]) => ContT[M, A, B])(implicit M: Defer[M]): ContT[M, A, B]
- implicit def catsDataContTDefer[M[_], B]: Defer[[γ$2$]ContT[M, B, γ$2$]]
- implicit def catsDataContTMonad[M[_], A](implicit arg0: Defer[M]): Monad[[γ$4$]ContT[M, A, γ$4$]]
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def defer[M[_], A, B](b: => B): ContT[M, A, B]
Similar to pure but evaluation of the argument is deferred.
Similar to pure but evaluation of the argument is deferred.
This is useful for building a computation which calls its continuation as the final step. Instead of writing:
ContT.apply { cb => val x = foo() val y = bar(x) val z = baz(y) cb(z) }
you can write:
ContT.defer { val x = foo() val y = bar(x) baz(y) }
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def later[M[_], A, B](fn: => ((B) => M[A]) => M[A]): ContT[M, A, B]
Similar to apply but evaluation of the argument is deferred.
- def liftF[M[_], A, B](mb: M[B])(implicit M: FlatMap[M]): ContT[M, A, B]
Lifts the
M[B]
into anContT[M, A, B]
.Lifts the
M[B]
into anContT[M, A, B]
.scala> import cats._, data._, implicits._ scala> val a: EitherT[Eval, String, Int] = 1.pure[EitherT[Eval, String, *]] scala> val c: cats.data.ContT[EitherT[Eval, String, *], Int, Int] = ContT.liftF(a) scala> c.run(EitherT.rightT(_)).value.value res0: Either[String, Int] = Right(1) scala> c.run(_ => EitherT.leftT("a")).value.value res1: Either[String, Int] = Left(a)
- def liftK[M[_], B](implicit M: FlatMap[M]): ~>[M, [γ$0$]ContT[M, B, γ$0$]]
Same as liftF, but expressed as a FunctionK for use with mapK
Same as liftF, but expressed as a FunctionK for use with mapK
scala> import cats._, data._ scala> trait Foo[F[_]] { def bar: F[Int] } scala> def mapK[F[_], G[_]](fooF: Foo[F])(f: F ~> G): Foo[G] = new Foo[G] { def bar: G[Int] = f(fooF.bar) } scala> val eitherTFoo = new Foo[EitherT[Eval, String, *]] { def bar = EitherT.rightT(1) } scala> val contTFoo: Foo[ContT[EitherT[Eval, String, *], Int, *]] = mapK(eitherTFoo)(ContT.liftK) scala> contTFoo.bar.run(EitherT.rightT(_)).value.value res0: Either[String, Int] = Right(1)
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def pure[M[_], A, B](b: B): ContT[M, A, B]
Lift a pure value into
ContT
- def resetT[M[_], A, B](contT: ContT[M, B, B])(implicit arg0: Monad[M], arg1: Defer[M]): ContT[M, A, B]
- def shiftT[M[_], A, B](f: ((B) => M[A]) => ContT[M, A, A])(implicit arg0: Applicative[M], arg1: Defer[M]): ContT[M, A, B]
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def tailRecM[M[_], A, B, C](a: A)(fn: (A) => ContT[M, C, Either[A, B]])(implicit M: Defer[M]): ContT[M, C, B]
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()