Principles and Practice of Declarative Programming

For a compiler writer, generating good machine code for a variety of platforms is hard work. One might try to reuse a retargetable code generator, but code generators are complex and difficult to use, and they limit one’s choice of implementation language. One might try to use C as a portable assembly language, but C limits the compiler writer’s flexibility and the performance of the resulting code. The wide use of C, despite these drawbacks, argues for a portable assembly language. C-is a new language designed expressly for this purpose. The use of a portable assembly language introduces new problems in the support of such high-level run-time services as garbage collection, exception handling, concurrency, profiling, and debugging. We address these problems by combining the C-language with a C-run-time interface. The combination is designed to allow the compiler writer a choice of sourcelanguage semantics and implementation techniques, while still providing good performance.

[1]  Puri Arenas,et al.  A Semantic Framework for Functional Logic Programming with Algebraic Polymorphic Types , 1997, TAPSOFT.

[2]  Gerhard Wetsel Abductive and constraint logic programming , 1997 .

[3]  Manuel E. Benitez,et al.  A portable global optimizer and linker , 1988, PLDI '88.

[4]  Peter Van Roy,et al.  Mobile objects in distributed Oz , 1997, TOPL.

[5]  Michael Hanus,et al.  The integration of functions into logic programming: a survey , 1994 .

[6]  Simon L. Peyton Jones,et al.  C--: A Portable Assembly Language that Supports Garbage Collection , 1999, PPDP.

[7]  Jan Chomicki,et al.  Datalog with Integer Periodicity Constraints , 1994, J. Log. Program..

[8]  Michael J. Maher,et al.  Constraint Logic Programming: A Survey , 1994, J. Log. Program..

[9]  John H. Reppy,et al.  CML: A Higher-Order Concurrent Language , 1991, PLDI.

[10]  Narciso Martí-Oliet,et al.  Action and Change in Rewriting Logic , 1999 .

[11]  Daniel Le Métayer,et al.  The GAMMA Model and Its Discipline of Programming , 1990, Sci. Comput. Program..

[12]  Teodor C. Przymusinski Every logic program has a natural stratification and an iterated least fixed point model , 1989, PODS.

[13]  Mario Rodríguez-Artalejo,et al.  A Lazy Narrowing Calculus for Functional Logic Programming with Algebraic Polymorphic Types , 1997, ILPS.

[14]  Puri Arenas,et al.  Embedding Multiset Constraints into a Lazy Functional Logic Language , 1998, PLILP/ALP.

[15]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..

[16]  Pascal Van Hentenryck,et al.  Design, Implementation, and Evaluation of the Constraint Language cc(FD) , 1994, Constraint Programming.

[17]  Bharat Jayaraman,et al.  Set Constructors, Finite Sets, and Logical Semantics , 1999, J. Log. Program..

[18]  Murray Shanahan Solving the frame problem - a mathematical investigation of the common sense law of inertia , 1997 .

[19]  Murray Shanahan,et al.  Prediction is Deduction but Explanation is Abduction , 1989, IJCAI.

[20]  Kim Marriott Constraint multiset grammars , 1994, Proceedings of 1994 IEEE Symposium on Visual Languages.

[21]  Vijay A. Saraswat,et al.  Concurrent constraint programming , 1989, POPL '90.

[22]  Gert Smolka The Oz Programming Model , 1996 .

[23]  J. C. Gonz Alez-Moreno,et al.  An Approach to Declarative Programming Based on a Rewriting Logic , 2022 .

[24]  Kim Marriott,et al.  A declarative specification and semantics for visual languages , 1991, J. Vis. Lang. Comput..

[25]  Peter Van Roy,et al.  1983-1993: The Wonder Years of Sequential Prolog Implementation , 1994, J. Log. Program..

[26]  Ehud Shapiro,et al.  The family of concurrent logic programming languages , 1989, CSUR.

[27]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[28]  Joel F. Bartlett,et al.  Compacting garbage collection with ambiguous roots , 1988, LIPO.

[29]  Carlo Zaniolo,et al.  Deterministic and Non-Deterministic Stable Models , 1997, J. Log. Comput..

[30]  Jeffrey D. Ullman,et al.  Principles of Database and Knowledge-Base Systems, Volume II , 1988, Principles of computer science series.

[31]  Sally C. Brailsford,et al.  The Progressive Party Problem: Integer Linear Programming and Constraint Programming Compared , 1995, CP.

[32]  R A Kowalski,et al.  Abductive Logic Programming 1 , 1993 .

[33]  Michael Hanus,et al.  Lazy Narrowing with Simplification , 1997, Comput. Lang..

[34]  Simon L. Peyton Jones,et al.  Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine , 1992, Journal of Functional Programming.

[35]  I. G. BONNER CLAPPISON Editor , 1960, The Electric Power Engineering Handbook - Five Volume Set.

[36]  Philip Wadler,et al.  How to declare an imperative , 1997, CSUR.

[37]  Nick Benton,et al.  Compiling standard ML to Java bytecodes , 1998, ICFP '98.

[38]  Frank Teusink,et al.  A characterization of stable models using a non-monotonic operator , 1993, Methods Log. Comput. Sci..

[39]  James M. Stichnoth,et al.  Support for garbage collection at every instruction in a Java compiler , 1999, PLDI '99.

[40]  Peter Z. Revesz,et al.  A Closed-Form Evaluation for Datalog Queries with Integer (Gap)-Order Constraints , 1993, Theor. Comput. Sci..

[41]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[42]  Agostino Dovier,et al.  Embedding extensional finite sets in CLP , 1993, ILPS.

[43]  Agostino Dovier,et al.  A Language for Programming in Logic with Finite Sets , 1996, J. Log. Program..