Given a value and a function in the Apply context, applies the function to the value.
ap2 is a binary version of ap, defined in terms of ap.
ap2 is a binary version of ap, defined in terms of ap.
Replaces the A
value in F[A]
with the supplied value.
Replaces the A
value in F[A]
with the supplied value.
Tuple the values in fa with the result of applying a function with the value
Tuple the values in fa with the result of applying a function with the value
Lift a function f to operate on Functors
Lift a function f to operate on Functors
Applies the pure (binary) function f to the effectful values fa and fb.
Applies the pure (binary) function f to the effectful values fa and fb.
map2 can be seen as a binary version of cats.Functor#map.
Similar to map2 but uses Eval to allow for laziness in the F[B]
argument.
Similar to map2 but uses Eval to allow for laziness in the F[B]
argument. This can allow for "short-circuiting" of computations.
NOTE: the default implementation of map2Eval
does not short-circuit
computations. For data structures that can benefit from laziness, Apply
instances should override this method.
In the following example, x.map2(bomb)(_ + _)
would result in an error,
but map2Eval
"short-circuits" the computation. x
is None
and thus the
result of bomb
doesn't even need to be evaluated in order to determine
that the result of map2Eval
should be None
.
scala> import cats.{Eval, Later} scala> import cats.implicits._ scala> val bomb: Eval[Option[Int]] = Later(sys.error("boom")) scala> val x: Option[Int] = None scala> x.map2Eval(bomb)(_ + _).value res0: Option[Int] = None
pure
lifts any value into the Applicative Functor.
pure
lifts any value into the Applicative Functor.
Applicative[Option].pure(10) = Some(10)
Given fa
and n
, apply fa
n
times to construct an F[List[A]]
value.
Given fa
and n
, apply fa
n
times to construct an F[List[A]]
value.
Empty the fa of the values, preserving the structure
Empty the fa of the values, preserving the structure
Lifts natural subtyping covariance of covariant Functors.
Lifts natural subtyping covariance of covariant Functors.
NOTE: In certain (perhaps contrived) situations that rely on universal
equality this can result in a ClassCastException
, because it is
implemented as a type cast. It could be implemented as map(identity)
, but
according to the functor laws, that should be equal to fa
, and a type
cast is often much more performant.
See this example
of widen
creating a ClassCastException
.