Elementary Data Structures in ALGOL-Like Languages

Abstract J.C. Reynolds has pointed out that ALGOL 60 has a set of properties not shared by most of the languages usually regarded as being its successors. We propose to use this ALGOL -like framework to design a language that could adequately support both applicative and imperative programming while also retaining the advantages of each of the “pure” frameworks. This paper discusses elementary data-structuring facilities (products, arrays, sums) for such a language, taking advantage of recent developments, such as this author's “quantification” notation, and the notion of “conjunctive type” proposed by Coppo and Dezani, and adapted to explicitly-typed languages by Reynolds.

[1]  John C. Reynolds,et al.  Syntactic control of interference , 1978, POPL.

[2]  Frank J. Oles,et al.  Type Algebras, Functor Categories, and Block Structure , 1986 .

[3]  Frank J. Oles,et al.  A category-theoretic approach to the semantics of programming languages , 1982 .

[4]  Robert D. Tennent,et al.  Quantification in Algol-Like Languages , 1987, Inf. Process. Lett..

[5]  M. Tofte Operational Semantics and Polymorphic Type Inference , 1988 .

[6]  Horst Herrlich,et al.  Category theory , 1979 .

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

[8]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

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

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

[11]  John C. Reynolds,et al.  Using category theory to design implicit conversions and generic operators , 1980, Semantics-Directed Compiler Generation.

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

[13]  John C. Reynolds,et al.  Three Approaches to Type Structure , 1985, TAPSOFT, Vol.1.

[14]  Charles Antony Richard Hoare,et al.  Hints on programming language design. , 1973 .

[15]  Joannes M. Lucassen Types and Effects Towards the Integration of Functional and Imperative Programming. , 1987 .

[16]  Mark B. Josephs Functional Programming with Side-Effects , 1986, Sci. Comput. Program..

[17]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[18]  Mariangiola Dezani-Ciancaglini,et al.  A new type assignment for λ-terms , 1978, Arch. Math. Log..

[19]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

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

[21]  Carl Ponder,et al.  Are applicative languages inefficient? , 1988, SIGP.

[22]  Tony Hoare,et al.  Notes on Data Structuring , 1972 .

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

[24]  M. Schönfinkel Über die Bausteine der mathematischen Logik , 1924 .

[25]  William W. Wadge,et al.  Lucid, the dataflow programming language , 1985 .

[26]  Donald E. Knuth,et al.  The remaining trouble spots in ALGOL 60 , 1967, Commun. ACM.

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

[28]  Robert D. Tennent Semantical Analysis of Specification Logic , 1985, Logic of Programs.

[29]  D. Prawitz Natural Deduction: A Proof-Theoretical Study , 1965 .

[30]  Robin Milner,et al.  A proposal for standard ML , 1984, LFP '84.

[31]  Dirk van Dalen,et al.  Logic and structure , 1980 .

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

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

[34]  Paul Hudak Para-Functional Programming , 1986, Computer.

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

[36]  Butler W. Lampson,et al.  Notes on the design of Euclid , 1977 .

[37]  John C. Mitchell,et al.  The essence of ML , 1988, POPL '88.

[38]  D. E. Knuth,et al.  The Remaining Troublespots in Algol 60 , 1983 .

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

[40]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[41]  Gordon D. Plotkin,et al.  The category-theoretic solution of recursive domain equations , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[42]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[43]  John C. Reynolds,et al.  The craft of programming , 1981, Prentice Hall International series in computer science.

[44]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[45]  Peter Henderson,et al.  Functional programming - application and implementation , 1980, Prentice Hall International Series in Computer Science.

[46]  Paul W. Abrahams,et al.  The LISP 2 programming language and system , 1966, AFIPS '66 (Fall).

[47]  Nancy McCracken,et al.  The Typechecking of Programs with Implicit Type Structure , 1984, Semantics of Data Types.