An implementation of Func that's specialized to Applicative.
Represents a function F[A] => B
.
Const is a phantom type, it does not contain a value of its second type parameter B
Const can be seen as a type level version of Function.const[A, B]: A => B => A
F
on the left and G
on the right of scala.util.Either
.
F
on the left and G
on the right of scala.util.Either
.
The underlying scala.util.Either
.
Transformer for Either
, allowing the effect of an arbitrary type constructor F
to be combined with the
fail-fast effect of Either
.
Transformer for Either
, allowing the effect of an arbitrary type constructor F
to be combined with the
fail-fast effect of Either
.
EitherT[F, A, B]
wraps a value of type F[Either[A, B]]
. An F[C]
can be lifted in to EitherT[F, A, C]
via EitherT.right
,
and lifted in to a EitherT[F, C, B]
via EitherT.left
.
Func is a function A => F[B]
.
Func is a function A => F[B]
.
IdT[F[_], A]
is the identity monad transformer.
Represents a stateful computation in a context F[_]
, from state SA
to state SB
,
with an initial environment E
, an accumulated log L
and a result A
.
Represents a stateful computation in a context F[_]
, from state SA
to state SB
,
with an initial environment E
, an accumulated log L
and a result A
.
In other words, it is a pre-baked stack of ReaderT[F, E, A]
, WriterT[F, L, A]
and IndexedStateT[F, SA, SB, A]
.
IndexedStateT[F, SA, SB, A]
is a stateful computation in a context F
yielding
a value of type A
.
IndexedStateT[F, SA, SB, A]
is a stateful computation in a context F
yielding
a value of type A
. The state transitions from a value of type SA
to a value
of type SB
.
Note that for the SA != SB
case, this is an indexed monad. Indexed monads
are monadic type constructors annotated by an additional type for effect
tracking purposes. In this case, the annotation tracks the initial state and
the resulting state.
Given IndexedStateT[F, S, S, A]
, this yields the StateT[F, S, A]
monad.
Represents a right-biased disjunction that is either an A
, or a B
, or both an A
and a B
.
Represents a right-biased disjunction that is either an A
, or a B
, or both an A
and a B
.
An instance of A Ior B
is one of:
A Ior B
is similar to scala.util.Either[A, B]
, except that it can represent the simultaneous presence of
an A
and a B
. It is right-biased so methods such as map
and flatMap
operate on the
B
value. Some methods, like flatMap
, handle the presence of two Both values using a
Semigroup[A]
, while other methods, like toEither, ignore the A
value in a Both.
A Ior B
is isomorphic to Either[Either[A, B], (A, B)]
, but provides methods biased toward B
values, regardless of whether the B
values appear in a Right or a Both.
The isomorphic scala.util.Either
form can be accessed via the unwrap method.
Represents a function A => F[B]
.
Similar to cats.data.Tuple2K, but for nested composition.
Similar to cats.data.Tuple2K, but for nested composition.
For instance, since both List
and Option
have a Functor
, then so does
List[Option[_]]
. This is represented by this data type via the instantiation
Nested[List, Option, ?]
.
scala> import cats.Functor scala> import cats.data.Nested scala> import cats.implicits._ scala> val listOption: List[Option[Int]] = List(Some(1), None) scala> val f: Int => String = i => (i * 2).toString scala> Functor[List].map(listOption)(opt => opt.map(f)) res0: List[Option[String]] = List(Some(2), None) scala> val nested: Nested[List, Option, Int] = Nested(listOption) scala> val result: Nested[List, Option, String] = Functor[Nested[List, Option, ?]].map(nested)(f) scala> result.value res1: List[Option[String]] = List(Some(2), None)
A data type which represents a non empty list of A, with single element (head) and optional structure (tail).
A data type which represents a Vector
guaranteed to contain at least one element.
A data type which represents a Vector
guaranteed to contain at least one element.
Note that the constructor is private
to prevent accidental construction of an empty
NonEmptyVector
. However, due to https://issues.scala-lang.org/browse/SI-6601, on
Scala 2.10, this may be bypassed due to a compiler bug.
A data type which represents a single element (head) and some other structure (tail).
A data type which represents a single element (head) and some other structure (tail). As we have done in package.scala, this can be used to represent a Stream which is guaranteed to not be empty:
type NonEmptyStream[A] = OneAnd[Stream, A]
OptionT[F[_], A]
is a light wrapper on an F[Option[A]]
with some
convenient methods for working with this nested structure.
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.
Represents a stateful computation in a context F[_]
, over state S
, with an
initial environment E
, an accumulated log L
and a result A
.
StateT[F, S, A]
is similar to Kleisli[F, S, A]
in that it takes an S
argument and produces an A
value wrapped in F
.
StateT[F, S, A]
is similar to Kleisli[F, S, A]
in that it takes an S
argument and produces an A
value wrapped in F
. However, it also produces
an S
value representing the updated state (which is wrapped in the F
context along with the A
value.
Tuple2K is a product to two independent functor values.
Tuple2K is a product to two independent functor values.