Knit

libretto.lambda.Knit
See theKnit companion object
sealed trait Knit[**[_, _], F[_]]

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class InFst[**, F, B]
class InFstImpl[**, F, B, A]
class InSnd[**, A, G]
class InSndImpl[**, A, G, B]
class KeepFst[**, A]
class KeepSnd[**, B]
Show all

Members list

Type members

Types

type Res

Value members

Abstract methods

def proveProduct[X]: Exists[[a] =>> Exists[[b] =>> F[X] =:= (a ** b)]]
def toFocus: Focus[**, F]
def toProjection[X]: Projection[**, F[X], Res]
def visit[R](caseKeepFst: [X] => (x$1: TypeEqK[F, [_] =>> X ** _$81], x$2: Res =:= X) => R, caseKeepSnd: [Y] => (x$1: TypeEqK[F, **], x$2: Res =:= Y) => R, caseInFst: [F1[_], Y] => (k: Knit[**, F1]) => (ev: TypeEqK[F, [x] =>> F1[x] ** Y], ev1: Res =:= (Res ** Y)) => R, caseInSnd: [X, F2[_]] => (k: Knit[**, F2]) => (ev: TypeEqK[F, [y] =>> X ** F2[y]], ev1: Res =:= (X ** Res)) => R): R

Concrete methods

def at[G[_]](g: Focus[**, G]): Knitted[**, [x] =>> G[F[x]], G[Res]]
def from[E[_]](using ev: TypeEqK[E, F]): Knitted[**, E, Res]
def inFst[Y]: Knitted[**, [x] =>> F[x] ** Y, Res ** Y]
def inSnd[X]: Knitted[**, [x] =>> X ** F[x], X ** Res]
def to[R](using ev: Res =:= R): Knitted[**, F, R]