### Variants
[ Datatype variants Funcon variant Funcon variant-id Funcon variant-value ] Meta-variables T <: values Datatype variants(T) ::= variant(_:identifiers, _:T)
*/ Funcon variant-id(_:variants(T)) : =>identifiers
Rule
variant-id(variant(I:identifiers, _:T)) ~> I
Funcon variant-value(_:variants(T)) : =>T
Rule
variant-value(variant(_:identifiers, V:T)) ~> V
/*
A value of type `variants(T)` is a pair formed from an identifier and a value of type `T`.