ElimStep

libretto.lambda.LambdasImpl.VArr$.ElimStep$
See theElimStep companion trait
object ElimStep

Attributes

Companion:
trait
Graph
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type

Members list

Concise view

Type members

Classlikes

case class Closure[X, V, V1, B](captured: Expr[X], expr: VarDefining[V], m: Multiplier[|*|, V, V1], f: Shuffled[X |*| V1, B]) extends Found[V, B]

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Found[V, B]
trait ElimStep[V, B]
class Object
trait Matchable
class Any
case class Exact[V, V1, B](expr: VarDefining[V], m: Multiplier[|*|, V, V1], f: Shuffled[V1, B]) extends Found[V, B]

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Found[V, B]
trait ElimStep[V, B]
class Object
trait Matchable
class Any
sealed trait Found[V, B] extends ElimStep[V, B]

Attributes

Graph
Supertypes
trait ElimStep[V, B]
class Object
trait Matchable
class Any
Known subtypes
class Closure[X, V, V1, B]
class Exact[V, V1, B]
class HalfUsed[V, B, U]
case class HalfUsed[V, B, U](f: Found[V, B |*| U], unused: Var[U]) extends Found[V, B]

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Found[V, B]
trait ElimStep[V, B]
class Object
trait Matchable
class Any
case class NotFound[V, B]() extends ElimStep[V, B]

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait ElimStep[V, B]
class Object
trait Matchable
class Any
case class Overused[U, V, B](u: Var[U]) extends ElimStep[V, B]

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait ElimStep[V, B]
class Object
trait Matchable
class Any

Inherited types

type MirroredElemLabels <: Tuple

The names of the product elements

The names of the product elements

Attributes

Inherited from:
Mirror
type MirroredLabel <: String

The name of the type

The name of the type

Attributes

Inherited from:
Mirror

Value members

Concrete methods

def closure[X, V, W, B](captured: Expr[X], f: Found[V, W], g: Shuffled[X |*| W, B]): ElimStep[V, B]
def halfUsed1[V, B, U](step: ElimStep[V, B |*| U], u: Var[U]): ElimStep[V, B]
def halfUsed2[V, U, B](step: ElimStep[V, U |*| B], u: Var[U]): ElimStep[V, B]
def ofPar[V, B1, B2](v: Var[V], f1: Expr[B1], f2: Expr[B2]): ElimStep[V, B1 |*| B2]
def overused[U, V, B](u: Var[U]): ElimStep[V, B]
def thenSnd[V, B1, X, B2](f: Found[V, B1 |*| X], g: Found[X, B2]): ElimStep[V, B1 |*| B2]