module Kind: sig .. end
as_arrow k transforms the kind k to an n-ary arrow kind. This
is permitted for every kind k. A non-arrow kind is viewed as an
arrow kind of arity 0.
type kind =
| |
KTerm |
| |
KType |
| |
KPerm |
| |
KArrow of kind * kind |
val karrow : ('a * kind) list -> kind -> kind
val as_arrow : kind -> kind list * kind
as_arrow k transforms the kind k to an n-ary arrow kind. This
is permitted for every kind k. A non-arrow kind is viewed as an
arrow kind of arity 0.
val arity : kind -> int
arity k is the arity of k, viewed as an arrow kind.
val print : kind -> string
print and print_kind convert a kind to a textual representation.
val print_kind : kind -> PPrint.document
val equal : kind -> kind -> bool
equal tests the equality of two kinds.