Mathematics of Program Construction

Algebraic dynamic programming is a new method for developing and reasoning about dynamic programming algorithms. In this approach, so-called yield grammars and evaluation algebras constitute abstract specifications of dynamic programming algorithms. We describe how this theory is put to practice by providing a specification language that can both be embedded in a lazy functional language, and translated into an imperative language. Parts of the analysis required for the latter translation also gives rise to source-to-source transformations that improve the asymptotic efficiency of the functional implementation. The multi-paradigm system resulting from this approach provides increased programming productivity and effective validation.

[1]  O. Danvy,et al.  Compiling Monads ∗ , 1991 .

[2]  Maarten M. Fokkinga,et al.  Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire , 1991, FPCA.

[3]  John C. Shepherdson,et al.  Unfold/fold transformations of logic programs , 1992, Mathematical Structures in Computer Science.

[4]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[5]  Mans Vestin Genetic algorithms in Haskell with polytypic programming , 1997 .

[6]  Mitchell Wand,et al.  Essentials of programming languages , 2008 .

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

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

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

[10]  Mark P. Jones A system of constructor classes: overloading and implicit higher-order polymorphism , 1993, FPCA '93.

[11]  Simon L. Peyton Jones,et al.  Type Classes in Haskell , 1994, ESOP.

[12]  M.N. Sastry,et al.  Structure and interpretation of computer programs , 1986, Proceedings of the IEEE.

[13]  Jean Vuillemin,et al.  A unifying look at data structures , 1980, CACM.

[14]  A. Tarski A LATTICE-THEORETICAL FIXPOINT THEOREM AND ITS APPLICATIONS , 1955 .

[15]  John C. Mitchell,et al.  Foundations for programming languages , 1996, Foundation of computing series.