Combine3

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

Provides environment for implementing Handlers, that handle 3 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 & Fx3

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 &![Fx4 <: HasSignature](fx4: Fx4): Combine4[Fx1, Fx2, Fx3, Fx4]

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

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

Concrete fields

val fx1: Fx1
val fx2: Fx2
val fx3: Fx3