libretto.lambda.EnumModule
See theEnumModule companion object
Attributes
- Companion
- object
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
Members list
Type members
Classlikes
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
Types
Witnesses that Cases
is a list :: cases, usable in Enum
, i.e. that Cases
is :: the form (Name1 :: T1) || ... || (NameN :: TN)
.
Witnesses that Cases
is a list :: cases, usable in Enum
, i.e. that Cases
is :: the form (Name1 :: T1) || ... || (NameN :: TN)
.
Attributes
type Partitioning[Cases] <: Partitioning[->, **, Enum[Cases]] { type Partition = [P] =>> EnumPartition[Cases, P]; }
Value members
Abstract methods
Concrete methods
def extractorOf[T, Cases](p: Partitioning[->, **, T] { type Partition = [P] =>> EnumPartition[Cases, P]; })(label: String)(using ev: IsCaseOf[label.type, Cases]): Extractor[->, **, T, ev.Type]
Abstract fields
Givens
Givens
given consCaseList[HLbl <: String, H, Tail](using hLbl: StaticValue[HLbl], t: CaseList[Tail]): CaseList[(HLbl :: H) || Tail]
given distFCons[F[_], Label <: String, H, Tail](using label: StaticValue[Label], tail: DistF[F, Tail]): DistF[F, (Label :: H) || Tail] { type Out = (Label :: F[H]) || tail.Out; }
given distFSingle[F[_], Lbl <: String, A](using label: StaticValue[Lbl]): DistF[F, Lbl :: A] { type Out = Lbl :: F[A]; }
given distLRCons[A, Label <: String, H, Tail](using label: StaticValue[Label], tail: DistLR[A, Tail]): DistLR[A, (Label :: H) || Tail] { type Out = (Label :: (A ** H)) || tail.Out; }
given distLRSingle[A, Label <: String, B](using label: StaticValue[Label]): DistLR[A, Label :: B] { type Out = Label :: (A ** B); }
given isHeadCase[HLbl <: String, H, Tail](using hLbl: StaticValue[HLbl]): IsCaseOf[HLbl, (HLbl :: H) || Tail] { type Type = H; }
given isSingleCase[Lbl <: String, A](using label: StaticValue[Lbl]): IsCaseOf[Lbl, Lbl :: A] { type Type = A; }
given isTailCase[Lbl, HLbl, H, Tail](using j: IsCaseOf[Lbl, Tail]): IsCaseOf[Lbl, (HLbl :: H) || Tail] { type Type = j.Type; }
Extensions
Extensions
extension [Cases](p: Partitioning[Cases])
In this article