Lambda

class Lambda[-⚬[_, _], |*|[_, _], Var[_], VarSet](using inj: BiInjective[|*|], variables: Variable[Var, VarSet])
class Object
trait Matchable
class Any

Type members

Classlikes

object Abstracted
Companion:
class
sealed trait Abstracted[A, B]
Companion:
object
object Error
Companion:
class
sealed trait Error
Companion:
object
object Expr
Companion:
class
sealed trait LinearityViolation extends Error
Companion:
object
object VArr
Companion:
class
sealed trait VArr[A, B]

Arrow interspersed with intermediate Vars. Non-linear: includes projections and multiple occurrences of the same variable.

Arrow interspersed with intermediate Vars. Non-linear: includes projections and multiple occurrences of the same variable.

Companion:
object
object Vars

Types

type Expr[A] = VArr[_, A]
type Tupled[F[_], A] = Tupled[|*|, F, A]
type Vars[A] = Tupled[Var, A]

Value members

Concrete methods

def abs[A, B](f: Expr[A] => Expr[B], boundVar: Var[A])(using ev: SymmetricSemigroupalCategory[-⚬, |*|]): Abstracted[A, B]
def compile[A, B](f: Expr[A] => Expr[B], boundVar: Var[A])(using ev: SymmetricSemigroupalCategory[-⚬, |*|]): Either[Error, A -⚬ B]

Concrete fields

val shuffled: Shuffled[-⚬, |*|]

Extensions

Extensions

extension [A](vars: Vars[A])
def toSet: VarSet