The Design of Apple - A Language for Modular Programs

Abstract Sometimes programming is difficult because of the amount of detail that is relevant to the problem being solved. A suitable language for these problems should aid the programmer in organizing a program as a synthesis of parts. Apple is a language designed for such applications. It is a typed language in which functions are objects, and it provides three complementary ways to modularize programs. These are the definition of environments , the use of functional abstraction, and the use of data abstraction or parameterized, abstract data types. In this paper we describe the main features of Apple, and explain the motivation for many of the design decisions. Another document furnishes a formal definition.

[1]  Peter Henderson,et al.  A lazy evaluator , 1976, POPL.

[2]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

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

[4]  Michael J. C. Gordon,et al.  The Denotational Description of Programming Languages , 1979, Springer New York.

[5]  Olivier Lecarme An experience in structured programming and transferability , 1973 .

[6]  A. Church The calculi of lambda-conversion , 1941 .

[7]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[8]  John F. Wakerly,et al.  The programming language PASCAL , 1979, Microprocessors and microsystems.

[9]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[10]  Richard B. Kieburtz Programming without pointer variables , 1976, SIGMOD 1976.

[11]  Robert M. Keller,et al.  A loosely-coupled applicative multi-processing system , 1899 .

[12]  B. J. Mailloux,et al.  Revised Report on the Algorithmic Language ALGOL 68 , 1976, SIGP.

[13]  James H. Morris,et al.  Early experience with Mesa , 1977 .

[14]  John C. Reynolds,et al.  GEDANKEN—a simple typeless language based on the principle of completeness and the reference concept , 1970, Commun. ACM.

[15]  Bengt Nordström Programming with abstract data types, some examples , 1978, ACM '78.

[16]  Per Martin-Löf,et al.  Constructive mathematics and computer programming , 1984 .

[17]  David Gries The Multiple Assignment Statement , 1978, Program Construction.

[18]  Edwin H. Satterthwaite,et al.  Early experience with Mesa , 1977, CACM.

[19]  D. W. Barron,et al.  The Main Features of CPL , 1963, Comput. J..

[20]  P. Martin-Löf Constructive mathematics and computer programming , 1984 .

[21]  William H. Burge,et al.  Recursive Programming Techniques , 1975 .

[22]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

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

[24]  Gilles Kahn,et al.  Coroutines and Networks of Parallel Processes , 1977, IFIP Congress.

[25]  Richard B. Kieburtz,et al.  Programming without pointer variables , 1976, Conference on Data: Abstraction, Definition and Structure.

[26]  Daniel P. Friedman,et al.  CONS Should Not Evaluate its Arguments , 1976, ICALP.

[27]  Bengt Nordström,et al.  Programming in Constructive Set Theory: Some examples , 1981, FPCA '81.