Comp.Kind
External computation-level kinds.
type t =
| Ctype of {
location : Syncom.Location.t;
}
Ctype { _ }
is the kind of computation-level types ctype
.
| Arrow of {
location : Syncom.Location.t;
domain : Synext__.Synext_definition.Meta.Typ.t;
range : t;
}
Arrow { domain; range; _ }
is the computation-level kind domain -> range
.
| Pi of {
location : Syncom.Location.t;
parameter_identifier : Syncom.Identifier.t Support.Option.t;
plicity : Syncom.Plicity.t;
parameter_type : Synext__.Synext_definition.Meta.Typ.t;
body : t;
}
Pi { parameter_identifier = Option.Some "x"; parameter_type = t; explicit; body; _ }
is the explicit dependent product kind { x : t } body
if plicity = Plicity.Explicit
, and the implicit dependent product kind (x : t) body
if plicity = Plicity.Implicit
. The variable "x"
ranges over meta-level objects.