case class ConstructorSeqTL[SS <: HList, H <: Term with Subs[H], Intros <: HList](seqDom: ConstructorSeqDom[SS, H, Intros], typ: Typ[H]) extends Product with Serializable
Essentially the definition of an inductive type; has all parameters of the definition:
- SS
- a formal type for lifting information about introduction rules to type level.shape sequence
- H
the scala type of terms in the inductive type
typ
- Intros
the scala type of the introduction rules We can define functions recursively using the rec method and inductively using the induc method.
- seqDom
the sequence of introduction rules.
- typ
the inductive type being defined.
- Alphabetic
- By Inheritance
- ConstructorSeqTL
- Serializable
- Product
- Equals
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ConstructorSeqTL(seqDom: ConstructorSeqDom[SS, H, Intros], typ: Typ[H])
- seqDom
the sequence of introduction rules.
- typ
the inductive type being defined.
Value Members
- def induc[C <: Term with Subs[C], RecType <: Term with Subs[RecType], InducType <: Term with Subs[InducType]](Xs: Func[H, Typ[C]])(implicit mapper: ConstructorSeqMapper[SS, C, H, RecType, InducType, Intros]): InducType
returns the term
ind_W, X
for inductively defining function to the type familyXs
on W from the inductive typeW = typ
; an implicitmapper
is used, which also allows calculation of the typeRecType
.returns the term
ind_W, X
for inductively defining function to the type familyXs
on W from the inductive typeW = typ
; an implicitmapper
is used, which also allows calculation of the typeRecType
.- RecType
not used here, but part of the definition of the
mapper
.- InducType
the type of the
induc
function returned.
- def inducE[C <: Term with Subs[C]](Xs: Func[H, Typ[C]]): InducType forSome {type InducType <: Term with Subs[InducType]}
Existential typed version of induc to be used at runtime if necessary.
- val intros: Intros
The introduction rules.
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- def rec[C <: Term with Subs[C], RecType <: Term with Subs[RecType], InducType <: Term with Subs[InducType]](X: Typ[C])(implicit mapper: ConstructorSeqMapper[SS, C, H, RecType, InducType, Intros]): RecType
returns the term
rec_W, X
for recursively defining function toX
from the inductive typeW = typ
; an implicitmapper
is used, which also allows calculation of the typeRecType
.returns the term
rec_W, X
for recursively defining function toX
from the inductive typeW = typ
; an implicitmapper
is used, which also allows calculation of the typeRecType
.- RecType
type of the
rec
function returned;- InducType
not used here, but part of the definition of the
mapper
.- X
the codomain to which we wish to define recursive functions - the only one we need to specify;
- def recE[C <: Term with Subs[C]](X: Typ[C]): RecType forSome {type RecType <: Term with Subs[RecType]}
Existential typed version of rec for use at runtime if neccesary.
- val seqDom: ConstructorSeqDom[SS, H, Intros]
- def subs(x: Term, y: Term): ConstructorSeqTL[SS, H, Intros]
- val typ: Typ[H]
- def |:[S <: HList, ConstructorType <: Term with Subs[ConstructorType]](head: ConstructorTL[S, H, ConstructorType]): ConstructorSeqTL[::[S, SS], H, ::[ConstructorType, Intros]]
Prepend to the sequence of introduction rules.