Ask

@implicitNotFound("Could not find an implicit instance of Ask[${F}, ${E}]. If you have a\nvalue of type ${E} in scope, or a way of computing one, you may want to construct\na value of type Kleisli for this call-site, rather than type ${F}. An example type:\n\n Kleisli[${F}, ${E}, *]\n\nIf you do not have an ${E} or a way of getting one, you should add\nan implicit parameter of this type to your function. For example:\n\n (implicit fask: Ask[${F}, ${E}])\n") trait Ask[F[_], +E] extends Serializable

Ask[F, E] lets you access an E value in the F[_] context.

Ask[F, E] lets you access an E value in the F[_] context.

Intuitively, this means that an E value is required as an input to get "out" of the F[_] context.

Ask[F, E] has one external law:

def askAddsNoEffects[A](fa: F[A]) = {
 (ask *> fa) <-> fa
}

Ask[F, E] has one internal law:

def readerIsAskAndMap[A](f: E => A) = {
 ask.map(f) <-> reader(f)
}
Companion
object
trait Serializable
class Object
trait Matchable
class Any
trait Local[F, E]

Value members

Abstract methods

def applicative: Applicative[F]
def ask[E2 >: E]: F[E2]

Concrete methods

def reader[A](f: E => A): F[A]