Polymorphic Type-Checking in Scheme

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 type system that is simple enough to be used by beginner students, yet is powerful enough to express the ideas of polymorphism, abstract data types (ADTs), 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 intersection types to control the use of datum and to generate simple but accurate types.

[1]  Olin Shivers,et al.  Control flow analysis in scheme , 1988, PLDI '88.

[2]  M.N. Sastry,et al.  Structure and interpretation of computer programs , 1986, Proceedings of the IEEE.

[3]  Daniel P. Friedman,et al.  Scheme and the art of programming , 1983 .

[4]  J. Roger Hindley,et al.  To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism , 1980 .

[5]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[6]  Luca Cardelli,et al.  Basic Polymorphic Typechecking , 1987, Sci. Comput. Program..

[7]  John C. Reynolds,et al.  Preliminary design of the programming language Forsythe , 1988 .

[8]  Pavel Curtis Constrained qualification in polymorphic type analysis , 1990 .

[9]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[10]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[11]  Mario Coppo,et al.  Principal type-schemes and lambda-calculus semantics , 1980 .

[12]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[13]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[14]  Mike Fagan,et al.  Soft typing: an approach to type checking for dynamically typed languages , 1992 .

[15]  Christopher T. Haynes,et al.  Type reconstruction for variable-arity procedures , 1994, LFP '94.

[16]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[17]  B. Pierce Programming with intersection types, union types, and polymorphism , 1991 .

[18]  Robert Cartwright,et al.  A practical soft type system for scheme , 1997, TOPL.

[19]  Mitchell Wand A semantic prototyping system , 1984, SIGPLAN '84.

[20]  Christian Lindig A Practical Type Checker for Scheme Style |a Practical Type Checker for Scheme , 1993 .