Interpreter

sealed trait Interpreter extends Signature

Super trait for any user-defined Interpreter.

There are 2 kinds of interpreters:

  • Proxy interpreters - The easy way: handle this effect in terms of other, preexisting effects (a.k.a. reinterpretation).
  • Flow interpreters - The hard way: implement a monad transformer for this effect. Take full Control.

Interpreters aren't directly usable. A Handler must be created from the interpreter, by calling toHandler method.

Companion:
object
trait Signature
class Object
trait Matchable
class Any
trait Flow
class Stateful[S, F]
class Stateful[S, F]
class Stateless[F]
class Stateless[F]
trait Proxy[Fx]
class Proxy[Fx]

Type members

Types

type Result[+A]

Alias for Handler, specialized for this interperter.

Alias for Handler, specialized for this interperter.

Inherited types

type !@![A, U]

Abstract type that must be used in definitions of effect's operations.

Abstract type that must be used in definitions of effect's operations.

From the perspective of effect's user, !@! is just an alias of !!. The final-override happens in Effect.

From the perspective of handler, !@! definition is enriched in a way depending on the chosen Interpreter.

Inherited from:
Signature

Abstract type that must be used in definitions of effect's operations.

Abstract type that must be used in definitions of effect's operations.

From the perspective of effect's user, ThisEffect is just an alias of this.type. The final-override happens in Effect.

From the perspective of handler, ThisEffect definition is enriched in a way depending on the chosen Interpreter.

Inherited from:
Signature