Packages

final case class OptionT[F[_], A](value: F[Option[A]]) extends Product with Serializable

OptionT[F[_], A] is a light wrapper on an F[Option[A]] with some convenient methods for working with this nested structure.

It may also be said that OptionT is a monad transformer for Option.

For more information, see the documentation.

Source
OptionT.scala
Linear Supertypes
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. OptionT
  2. Serializable
  3. Product
  4. Equals
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new OptionT(value: F[Option[A]])

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def ===(that: OptionT[F, A])(implicit eq: Eq[F[Option[A]]]): Boolean
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def cata[B](default: => B, f: (A) => B)(implicit F: Functor[F]): F[B]

    Catamorphism on the Option.

    Catamorphism on the Option. This is identical to fold, but it only has one parameter list, which can result in better type inference in some contexts.

  7. def cataF[B](default: => F[B], f: (A) => F[B])(implicit F: FlatMap[F]): F[B]

    Effectful catamorphism on the Option.

    Effectful catamorphism on the Option. This is identical to foldF, but it only has one parameter list, which can result in better type inference in some contexts.

  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  9. def collect[B](f: PartialFunction[A, B])(implicit F: Functor[F]): OptionT[F, B]

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.collect{ case i if i == 2 => i }
    res0: OptionT[List, Int] = OptionT(List(Some(2), None, None, None, None))
    scala> optionT.collect{ case i: Int => i == 2 }
    res0: OptionT[List, Boolean] = OptionT(List(Some(true), None, Some(false), None, None))
  10. def compare(that: OptionT[F, A])(implicit o: Order[F[Option[A]]]): Int

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.compare(OptionT[List, Int](List(Some(2))))
    res0: Int = 1
    
    scala> optionT.compare(OptionT[List, Int](List(Some(2), None, Some(414), None, None)))
    res0: Int = 0
  11. def contramap[B](f: (B) => A)(implicit F: Contravariant[F]): OptionT[F, B]
  12. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. def exists(f: (A) => Boolean)(implicit F: Functor[F]): F[Boolean]
  14. def filter(p: (A) => Boolean)(implicit F: Functor[F]): OptionT[F, A]

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.filter(el => (el % 2 == 0))
    res0: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    
    scala> optionT.filter(el => (el % 3 == 0))
    res1: OptionT[List, Int] = OptionT(List(None, None, Some(414), None, None))
  15. def filterNot(p: (A) => Boolean)(implicit F: Functor[F]): OptionT[F, A]

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.filterNot(el => (el % 2 == 0))
    res0: OptionT[List, Int] = OptionT(List(None, None, None, None, None))
    
    scala> optionT.filterNot(el => (el % 3 == 0))
    res1: OptionT[List, Int] = OptionT(List(Some(2), None, None, None, None))
  16. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  17. def flatMap[B](f: (A) => OptionT[F, B])(implicit F: Monad[F]): OptionT[F, B]
  18. def flatMapF[B](f: (A) => F[Option[B]])(implicit F: Monad[F]): OptionT[F, B]
  19. def flatTapNone[B](ifNone: => F[B])(implicit F: Monad[F]): OptionT[F, A]

    Perform an effect if the value inside the is a None, leaving the value untouched.

    Perform an effect if the value inside the is a None, leaving the value untouched. Equivalent to orElseF with an effect returning None as argument.

  20. def flatTransform[B](f: (Option[A]) => F[Option[B]])(implicit F: Monad[F]): OptionT[F, B]
  21. def fold[B](default: => B)(f: (A) => B)(implicit F: Functor[F]): F[B]
  22. def foldF[B](default: => F[B])(f: (A) => F[B])(implicit F: FlatMap[F]): F[B]

    Transform this OptionT[F, A] into a F[B].

    Transform this OptionT[F, A] into a F[B].

    Example:

    scala> import cats.implicits._
    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT[List, Int](List(Some(23), None))
    scala> optionT.foldF(Nil)(v => List(v, v * 2))
    res0: List[Int] = List(23, 46)
  23. def foldLeft[B](b: B)(f: (B, A) => B)(implicit F: Foldable[F]): B
  24. def foldRight[B](lb: Eval[B])(f: (A, Eval[B]) => Eval[B])(implicit F: Foldable[F]): Eval[B]
  25. def forall(f: (A) => Boolean)(implicit F: Functor[F]): F[Boolean]
  26. def foreachF(f: (A) => F[Unit])(implicit F: Monad[F]): F[Unit]

    Transform this OptionT[F, A] into a F[Unit].

    Transform this OptionT[F, A] into a F[Unit]. This is identical to foldF(F.unit)(f).

  27. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  28. def getOrElse[B >: A](default: => B)(implicit F: Functor[F]): F[B]
  29. def getOrElseF[B >: A](default: => F[B])(implicit F: Monad[F]): F[B]
  30. def getOrRaise[E](e: => E)(implicit F: MonadError[F, _ >: E]): F[A]

    Like getOrElseF but accept an error E and raise it when the inner Option is None

    Like getOrElseF but accept an error E and raise it when the inner Option is None

    Equivalent to getOrElseF(F.raiseError(e)))

    scala> import cats.data.OptionT
    scala> import cats.implicits._
    scala> import scala.util.{Success, Failure, Try}
    
    scala> val optionT: OptionT[Try, Int] = OptionT[Try, Int](Success(None))
    scala> optionT.getOrRaise(new RuntimeException("ERROR!"))
    res0: Try[Int] = Failure(java.lang.RuntimeException: ERROR!)
  31. def imap[B](f: (A) => B)(g: (B) => A)(implicit F: Invariant[F]): OptionT[F, B]
  32. def isDefined(implicit F: Functor[F]): F[Boolean]

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.isDefined
    res0: List[Boolean] = List(true, false, true, false, false)
  33. def isEmpty(implicit F: Functor[F]): F[Boolean]

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.isEmpty
    res0: List[Boolean] = List(false, true, false, true, true)
  34. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  35. def map[B](f: (A) => B)(implicit F: Functor[F]): OptionT[F, B]

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.map(_.toString + "!")
    res0: OptionT[List, String] = OptionT(List(Some(2!), None, Some(414!), None, None))
  36. def mapAccumulate[S, B](init: S)(f: (S, A) => (S, B))(implicit traverseF: Traverse[F]): (S, OptionT[F, B])
  37. def mapFilter[B](f: (A) => Option[B])(implicit F: Functor[F]): OptionT[F, B]
  38. def mapK[G[_]](f: ~>[F, G]): OptionT[G, A]

    Modify the context F using transformation f.

  39. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  40. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  41. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  42. def orElse(default: => OptionT[F, A])(implicit F: Monad[F]): OptionT[F, A]

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.orElseF(List[Option[Int]](Some(-1)))
    res0: OptionT[List, Int] = OptionT(List(Some(2), Some(-1), Some(414), Some(-1), Some(-1)))
  43. def orElseF(default: => F[Option[A]])(implicit F: Monad[F]): OptionT[F, A]
  44. def partialCompare(that: OptionT[F, A])(implicit p: PartialOrder[F[Option[A]]]): Double
  45. def productElementNames: Iterator[String]
    Definition Classes
    Product
  46. def semiflatMap[B](f: (A) => F[B])(implicit F: Monad[F]): OptionT[F, B]
  47. def semiflatTap[B](f: (A) => F[B])(implicit F: Monad[F]): OptionT[F, A]
  48. def show(implicit F: Show[F[Option[A]]]): String

    Example:

    Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.show
    res0: String = List(Some(2), None, Some(414), None, None)
  49. def subflatMap[B](f: (A) => Option[B])(implicit F: Functor[F]): OptionT[F, B]
  50. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  51. def toLeft[R](right: => R)(implicit F: Functor[F]): EitherT[F, A, R]
  52. def toLeftF[R](right: => F[R])(implicit F: Monad[F]): EitherT[F, A, R]
  53. def toNested: Nested[F, Option, A]

    Transform this OptionT[F, A] into a Nested[F, Option, A].

    Transform this OptionT[F, A] into a Nested[F, Option, A].

    An example where toNested can be used, is to get the Apply.ap function with the behavior from the composed Apply instances from F and Option, which is inconsistent with the behavior of the ap from Monad of OptionT.

    scala> import cats.implicits._
    scala> import cats.data.OptionT
    scala> val ff: OptionT[List, Int => String] =
         |   OptionT(List(Option(_.toString), None))
    scala> val fa: OptionT[List, Int] = OptionT(List(Option(1), Option(2)))
    scala> ff.ap(fa)
    res0: OptionT[List,String] = OptionT(List(Some(1), Some(2), None))
    scala> OptionT(ff.toNested.ap(fa.toNested).value)
    res1: OptionT[List,String] = OptionT(List(Some(1), Some(2), None, None))
  54. def toRight[L](left: => L)(implicit F: Functor[F]): EitherT[F, L, A]
  55. def toRightF[L](left: => F[L])(implicit F: Monad[F]): EitherT[F, L, A]
  56. def transform[B](f: (Option[A]) => Option[B])(implicit F: Functor[F]): OptionT[F, B]
  57. def traverse[G[_], B](f: (A) => G[B])(implicit F: Traverse[F], G: Applicative[G]): G[OptionT[F, B]]
  58. val value: F[Option[A]]
  59. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  60. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  61. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  62. def withFilter(p: (A) => Boolean)(implicit F: Functor[F]): OptionT[F, A]

    It is used for desugaring 'for comprehensions'.

    It is used for desugaring 'for comprehensions'. OptionT wouldn't work in 'for-comprehensions' without this method. Example:

    scala> import cats.data.OptionT
    
    scala> val optionT: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    scala> optionT.withFilter(el => (el % 2 == 0))
    res0: OptionT[List, Int] = OptionT(List(Some(2), None, Some(414), None, None))
    
    scala> optionT.withFilter(el => (el % 3 == 0))
    res1: OptionT[List, Int] = OptionT(List(None, None, Some(414), None, None))

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped