The Type Structure of CAT
Contribution to Book
Computer science educators have long lamented the fact that so many students show a lack of basic understanding of the fundamental mathematical principles underlying the field. Small wonder, when they are taught that "the integers" end at maxint, that fractions are to be rounded off to the nearest decimal, and that recursion is something connected with the notion of "pointers." We may think that we are doing an admirable job with our elementary discrete mathematics course; we may be encouraging any number of students to enroll in substantive courses in logic, algebra, and the like. But so long as we persist in the use of programming languages that are counter to the most fundamental mathematical precepts, obscuring their very nature, we cannot hope that the situation will improve. In this paper, we introduce the type structure of a new programming language, CAT, based in the mathematical theory of categories. Among its many novel features, the language offers an exact arithmetic, a blend of applicative and imperative programming methodologies, strong and consistent typing, a functorial semantics, a proof technique, functions as "first class" objects, and recursive structures without pointers. It is felt that a strong pedagogical basis can be achieved by the early introduction to such a language -- provided of course, that the more esoteric categorical properties are kept "at a distance." The CAT language, even as seen at an informal level (as is our treatment here), nevertheless introduces a number of important constructive notions, in particular that of "provable recursiveness," one that seems to have been overlooked in the literature. In the context developed here, it is seen to form the basis for a whole new programming philosophy.
Document Object Identifier (DOI)
J. Paul Myers, Jr., Michael J. O'Donnell
Myers, J. P., Jr., & Prather, R. E. (1992). The type structure of CAT. In J. P. Myers, Jr. & M. J. O'Donnell (Eds.), Constructivity in computer science (pp. 218-227). Berlin, Germany: Springer.
Constructivity in Computer Science