Contexts

libretto.lambda.Lambdas.Contexts
trait Contexts

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object Context

Members list

Value members

Abstract methods

def fresh(info: C): Context
def getConstant[A](v: Var[V, A])(using Context): Option[[x] => Unit => x -> (A ** x)]
def getDiscard[A](v: Var[V, A])(using Context): Option[[B] => DummyImplicit ?=> (A ** B) -> B]
def getSplit[A](v: Var[V, A])(using Context): Option[A -> (A ** A)]
def info(using ctx: Context): C
def isDefiningFor[A](v: Var[V, A])(using ctx: Context): Boolean
def nested(info: C, parent: Context): Context
def newVar[A](label: V)(using Context): Var[V, A]
def registerConstant[A](v: Var[V, A])(introduce: [x] => Unit => x -> (A ** x))(using ctx: Context): Unit
def registerNonLinearOps[A](a: Expr[A])(split: Option[A -> (A ** A)], discard: Option[[B] => DummyImplicit ?=> (A ** B) -> B])(using Context): Unit

Concrete methods

def exprDiscarder(using Context): [X] => Expr[X] => Option[[Y] => DummyImplicit ?=> (X ** Y) -> Y]
def exprDiscarderSh(using Context): [X] => Expr[X] => Option[[Y] => DummyImplicit ?=> shuffled.Shuffled[X ** Y, Y]]
def getDiscardSh[A](v: Var[V, A])(using Context): Option[[B] => DummyImplicit ?=> shuffled.Shuffled[A ** B, B]]
def registerDiscard[A](a: Expr[A])(discard: [B] => DummyImplicit ?=> (A ** B) -> B)(using Context): Unit
def registerSplit[A](a: Expr[A])(split: A -> (A ** A))(using Context): Unit