Adt.ConsThis module defines the interface for creating ADT constructors.
make name ~fields constructs an ADT constructor definition with the given name and a list of fields. Each field in the list is a tuple of its name (string) and its type (ty option). A None type for a field indicates a recursive reference to the ADT being defined.