mechanical construction of type-checking predicates for extensible data types
The intent of this paper is to propose a simple mechanical procedure by which type checking predicates can be constructed for extensible sets of data types. Type checking under these circumstances is nontrivial because the potentially infinite (or at least very large) number of types makes it impossible (or at least very expensive) to encode type information into a fixed length tag that could be associated with each data item. To give substance to the discussion, the proposal is developed in terms of several basic data types and constructors for recursively defining aggregate data types of arbitrary structural complexity. A predicate for an aggregate type is defined in terms of the predicates for its various constituent types. It is hoped that the procedure discussed here could be exploited in a type-checking mechanism for any environment in which new data types can be synthesized out of existing ones.
type-checking predicate type constructor extensible types