Using dependent types to express modular structure

Writing any large program poses difficult problems of organization. In many modern programming languages these problems are addressed by special linguistic constructs, variously known as modules, packages, or clusters, which provide for partitioning programs into manageable components and for securely combining these components to form complete programs. Some general purpose components are able to take on a life of their own, being separately compiled and stored in libraries of generic, reusable program units. Usually modularity constructs also support some form of information hiding, such as "abstract data types." "Programming in the large" is concerned with using such constructs to impose structure on large programs, in contrast to "programming in the small", which deals with the detailed implementation of algorithms in terms of data structures and control constructs. Our goal here is to examine some of the proposed linguistic notions with respect to how they meet the pragmatic requirements of programming in the large.

[1]  M. Laudet,et al.  Symposium on Automatic Demonstration , 1970 .

[2]  John C. Mitchell,et al.  Representation independence and data abstraction , 1986, POPL '86.

[3]  Albert R. Meyer,et al.  "Type" is not a type , 1986, POPL '86.

[4]  James E. Donahue,et al.  An Informal Description of Russell , 1980 .

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

[6]  James Hook,et al.  Understanding Russell- A First Attempt , 1984, Semantics of Data Types.

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

[8]  Alan J. Demers,et al.  Data types are values , 1985, ACM Trans. Program. Lang. Syst..

[9]  David B. MacQueen Modules for standard ML , 1984, LFP '84.

[10]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[11]  Robert L. Constable,et al.  The Type Theory of PL/CV3 , 1984, TOPL.

[12]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

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

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

[15]  Luca Cardelli,et al.  Persistence and Type Abstraction , 1985, Data Types and Persistence , Informal Proceedings.

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

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

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

[19]  P. Martin-Lof,et al.  Constructive mathematics and computer programming , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[20]  Butler W. Lampson,et al.  A Kernel Language for Abstract Data Types and Modules , 1984, Semantics of Data Types.