Combine2

final class Combine2[Fx1 <: HasSignature, Fx2 <: HasSignature](val fx1: Fx1, val fx2: Fx2) extends Combine

Provides environment for implementing Handlers, that handle 2 Effects at once.

class Combine
trait HasSignature
trait Signature
class Object
trait Matchable
class Any

Type members

Inherited classlikes

abstract class Proxy[Fx] extends Proxy[Fx] with ThisInterpreter

Base class for user-defined Proxy Interpreter for this effect.

Base class for user-defined Proxy Interpreter for this effect.

Inherited from:
CanInterpret
abstract class Stateful[S, F[_]] extends Stateful[S, F] with ThisInterpreter

Base class for user-defined Stateful Interpreter for this effect.

Base class for user-defined Stateful Interpreter for this effect.

Inherited from:
CanInterpret
abstract class Stateless[F[_]] extends Stateless[F] with ThisInterpreter

Base class for user-defined Stateless Interpreter for this effect.

Base class for user-defined Stateless Interpreter for this effect.

Inherited from:
CanInterpret

Defines type aliases for Handler, specialized to eliminate this effect.

Defines type aliases for Handler, specialized to eliminate this effect.

Inherited from:
CanInterpret
sealed trait ThisInterpreter extends Unsealed
Inherited from:
CanInterpret

Types

override type ThisEffect = Fx1 & Fx2

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
final type ThisHandler[F[_], N] = Handler[F, ThisEffect, N]

Alias for Handler, specialized to eliminate this effect.

Alias for Handler, specialized to eliminate this effect.

Inherited from:
CanInterpret

Value members

Concrete methods

def &![Fx3 <: HasSignature](fx3: Fx3): Combine3[Fx1, Fx2, Fx3]

Combines with another Effect instance, so that a single Handler for 3 effects can be created.

Combines with another Effect instance, so that a single Handler for 3 effects can be created.

Concrete fields

val fx1: Fx1
val fx2: Fx2