Some ideas on data types in high level languages

We explore some new and old ideas concerning data types; what a data type is, overloading operators, when and how implicit conversions between programmer data types should be allowed and so forth. The current notion that a data type is a set of values together with basic operations on that set leads us to conclude that formal parameter types need not be so explicitly stated. Given a formal parameter X with operations s 1 ,...,s n being performed on X within a procedure, one should be able to supply, as actual parameters in a call, a variable of any type which has operations s 1 ,...,s n defined on it. We introduce a notation for this, using PASCAL as a base language, illustrate the added flexibility it gives us, and show briefly how to implement the idea efficiently.