ClosedLib

class ClosedLib[DSL <: ClosedDSL, CLib <: CoreLib[DSL]](val dsl: DSL, val coreLib: CLib & CoreLib[DSL])
Companion
object
class Object
trait Matchable
class Any

Type members

Classlikes

class ClosedLinearFunctionOps[A, B](self: A -⚬ B)
class FocusedOnFunctionCo[F[_], A, B](f: FocusedCo[F, A =⚬ B])
class FocusedOnFunctionContra[F[_], A, B](f: FocusedContra[F, A =⚬ B])

Value members

Concrete methods

def absorbR[A, B, C]: A =⚬ B |*| C -⚬ A =⚬ B |*| C

Make a function A =⚬ B ''"absorb"'' a C and return it as part of its output, i.e. A =⚬ (B |*| C).

Make a function A =⚬ B ''"absorb"'' a C and return it as part of its output, i.e. A =⚬ (B |*| C).

def input[C]: ContraFunctor[[x] =>> x =⚬ C]

Function object (internal hom) is contravariant in the input type.

Function object (internal hom) is contravariant in the input type.

def output[A]: Functor[[x] =>> A =⚬ x]

Function object (internal hom) is covariant in the output type.

Function object (internal hom) is covariant in the output type.

def unveilSequentially[A, Ā, B](ev: Dual[A, Ā]): A |*| B -⚬ Ā =⚬ B

Given A and B concurrently (A |*| B), we can suggest that A be consumed before B by turning it into Ā =⚬ B, where Ā is the dual of A.

Given A and B concurrently (A |*| B), we can suggest that A be consumed before B by turning it into Ā =⚬ B, where Ā is the dual of A.

def zapPremises[A, Ā, B, C](ev: Dual[A, Ā]): A =⚬ B |*| Ā =⚬ C -⚬ B |*| C

Concrete fields

val coreLib: CLib & CoreLib[DSL]
val dsl: DSL