Polymorphic Type-Checking in Scheme by Steven Jenkins and Gary T. Leavens Abstract This paper presents a type-inference system for Scheme that is designed to be used by students in an introductory programming course. The major goal of the work is to present a simple type inference system that can be used by beginning students, yet is powerful enough to express the ideas of types, polymorphism, abstract data types, and higher-order procedures. The system also performs some rudimentary syntax checking. The system uses subtyping, but only in a primitive fashion. It has a type datum which is a supertype of all types, and a type poof which is a subtype of all types. It uses and-types (intersection types) to control the use of datum and to generate accurate but simple types. Keywords: abstract data type, type inference 1995 CR Categories: D.3.3 [Programming Languages] Language Constructs -- Abstract data types, data types and structures D.3.4 [Programming Languages] Processors --- preprocessors F.3.3 [Logics and Meanings of Programs] Studies of Program Constructs --- type structure.