A Modular Monadic Action Semantics

A domain-specific language (DSL) is a framework which is designed to precisely meet the needs of a particular application. Domain-specific languages exist for a variety of reasons. As productivity tools, they are used to make application prototyping and development faster and more robust in the presence of evolving requirements. Furthermore, by bridging the "semantic gap" between an application domain and program code, DSLs increase the opportunity to apply formal methods in proving properties of an application. In this paper, we contribute a synthesis of two existing systems that address the problem of providing sound semantic descriptions of realistic programming languages: action semantics and modular monadic semantics. The resulting synthesis, modular monadic action semantics, is compatible with action semantics yet adds true modularity and allows domain specific specifications to be made at a variety of levels.

[1]  Jim Welsh,et al.  A Model Implementation of Standard Pascal , 1986 .

[2]  John McCarthy,et al.  LISP 1.5 Programmer's Manual , 1962 .

[3]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[4]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[5]  Daniel P. Friedman,et al.  Programming with Continuations , 1984 .

[6]  Peter Ørbæk OASIS: An Optimizing Action-Based Compiler Generator , 1994, CC.

[7]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

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

[9]  Jens Palsberg,et al.  A Provably Correct Compiler Generator , 1992, ESOP.

[10]  Andries van Dam,et al.  Pascal on the Macintosh: A Graphical Approach , 1987 .

[11]  Philip Wadler,et al.  The Glasgow Haskell Compiler: a technical overview , 1993 .

[12]  Lloyd Allison,et al.  A Practical Introduction to Denotational Semantics , 1987 .

[13]  Søren B. Lassen Basic Action Theory , 1995 .

[14]  Deryck Forsyth Brown,et al.  Actress: An Action Semantics Directed Compiler Generator , 1992, CC.

[15]  David A. Schmidt,et al.  Denotationaisemantics: a methodology for language development , 1986 .

[16]  Erik Meijer,et al.  On the expressive power of Constructor Classes , 1994, Functional Programming.

[17]  Ralph E. Griswold,et al.  The Icon programming language , 1983 .

[18]  Andrew Moran,et al.  Making choices lazily , 1995, FPCA '95.

[19]  A. Church A Set of Postulates for the Foundation of Logic , 1932 .

[20]  Eugenio Moggi A Modular Approach to Denotational Semantics , 1991, Category Theory and Computer Science.

[21]  Peter D. Mosses Unified Algebras and Action Semantics , 1989, STACS.

[22]  Donald Ervin Knuth,et al.  The Art of Computer Programming, Volume II: Seminumerical Algorithms , 1970 .

[23]  Bill Roscoe,et al.  An Operational Semantics for CSP , 1986 .

[24]  Arie van Deursen,et al.  ASD: The Action Semantic Description Tools , 1996, AMAST.

[25]  Guy L. Steele,et al.  Building interpreters by composing monads , 1994, POPL '94.

[26]  Peter D. Mosses,et al.  A Basic Abstract Semantic Algebra , 1984, Semantics of Data Types.

[27]  Peter D. Mosses,et al.  Theory and Practice of Action Semantics , 1996, MFCS.

[28]  Eugenio Moggi,et al.  Notions of Computation and Monads , 1991, Inf. Comput..

[29]  M. Felleisen,et al.  Reasoning with Continuations Iii: a Complete Calculus of Control , 1992 .

[30]  Matthias Felleisen,et al.  The Denotational Specifications of Complex Languages , 2005 .

[31]  Paul Hudak,et al.  Modular Denotational Semantics for Compiler Construction , 1996, ESOP.

[32]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[33]  Peter D. Mosses Theory and Practice of Action Semantics , 1996 .

[34]  Samson Abramsky Semantics of Interaction (Abstract) , 1996, CAAP.

[35]  Peter D. Mosses,et al.  A Semantic Algebra for Binding Constructs , 1981, ICFPC.

[36]  Gordon D. Plotkin,et al.  Call-by-Name, Call-by-Value and the lambda-Calculus , 1975, Theor. Comput. Sci..

[37]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[38]  David A. Espinosa Semantic Lego , 1995 .

[39]  F. Warren Burton Nondeterminism with Referential Transparency in Functional Programming Languages , 1988, Comput. J..

[40]  Robin Milner,et al.  Processes: A Mathematical Model of Computing Agents , 1975 .