Pebble, a Kernel Language for Modules and Abstract Data Types

Abstract A small set of constructs can simulate a wide variety of apparently distinct features in modern programming languages. Using a kernel language called Pebble based on the typed lambda calculus with bindings, declarations, dependent types, and types as compile time values, we show how to build modules, interfaces and implementations, abstract data types, generic types, recursive types, and unions. Pebble has a concise operational semantics given by inference rules.

[1]  Gordon D. Plotkin,et al.  An ideal model for recursive polymorphic types , 1984, Inf. Control..

[2]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[3]  Giuseppe Longo,et al.  Type-free compiling of parametric types , 1987, Formal Description of Programming Concepts.

[4]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[5]  B. Krieg-Brückner,et al.  Towards a wide spectrum language to support program specification and program development , 1978, SIGP.

[6]  Nancy Jean Mccracken,et al.  An investigation of a programming language with a polymorphic type structure. , 1979 .

[7]  P. Martin-Löf An Intuitionistic Theory of Types: Predicative Part , 1975 .

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

[9]  Butler W. Lampson,et al.  Practical use of a polymorphic applicative language , 1983, POPL '83.

[10]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

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

[12]  Peter Pepper,et al.  A Study on Transformational Semantics , 1978, Program Construction.

[13]  Rod M. Burstall,et al.  Programming with Modules as Typed Functional Programming , 1984, FGCS.

[14]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[15]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

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