Lambdas

libretto.lambda.Lambdas
See theLambdas companion object
trait Lambdas[->[_, _], **[_, _], V, C]

Type parameters

C

information associated with lambda contexts (scopes)

V

information associated with variables

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class LambdasImpl[->, **, V, C, SHUFFLED]

Members list

Type members

Classlikes

trait Contexts

Attributes

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

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
object Expr
object given_ClampEq_Expr extends ClampEq[Expr]

Attributes

Supertypes
trait ClampEq[Expr]
class Object
trait Matchable
class Any
Self type

Types

type Context
type Delambdified[A, B] = CapturingFun[shuffled.Shuffled, **, [_] =>> Tupled[Expr, _$10], A, B]
type Delambdifold[A, B] = CapturingFun[->, **, [_] =>> Tupled[Expr, _$11], A, B]
type Expr[A]
final type Tupled[F[_], A] = Tupled[**, F, A]

Value members

Concrete methods

def delambdifyFoldNested[A, B](nestedCtxInfo: C, varName: V, f: Context ?=> Expr[A] => Expr[B])(using parent: Context, cat: SymmetricSemigroupalCategory[->, **]): Validated[LinearityViolation, Delambdifold[A, B]]
def delambdifyFoldTopLevel[A, B](freshCtxInfo: C, varName: V, f: Context ?=> Expr[A] => Expr[B])(using SymmetricSemigroupalCategory[->, **]): Validated[LinearityViolation, Delambdifold[A, B]]
def delambdifyNested[A, B](nestedCtxInfo: C, varName: V, f: Context ?=> Expr[A] => Expr[B])(using parent: Context): Validated[LinearityViolation, Delambdified[A, B]]
def delambdifyTopLevel[A, B](freshCtxInfo: C, varName: V, f: Context ?=> Expr[A] => Expr[B]): Validated[LinearityViolation, Delambdified[A, B]]

Abstract fields

val Expr: Exprs
val shuffled: Shuffled[->, **]

Givens

Extensions

Extensions

extension [A](a: Expr[A])
infix def map[B](f: A -> B)(resultVar: V)(using Context): Expr[B]
def resultVar: Var[V, A]
infix def zip[B](b: Expr[B])(resultVar: V)(using Context): Expr[A ** B]