Building Interpreters by Composing Monads (1994) [27 citations — 0 self]
Abstract:
: We exhibit a set of functions coded in Haskell that can be used as building blocks to construct a variety of interpreters for Lisp-like languages. The building blocks are joined merely through functional composition. Each building block contributes code to support a specific feature, such as numbers, continuations, functions calls, or nondeterminism. The result of composing some number of building blocks is a parser, an interpreter, and a printer that support exactly the expression forms and data types needed for the combined set of features, and no more. The data structures are organized as pseudomonads, a generalization of monads that allows composition. Functional composition of the building blocks implies type composition of the relevant pseudomonads. Our intent was that the Haskell type resolution system ought to be able to deduce the approprate data types automatically. Unfortunately there is a deficiency in current Haskell implementations related to recursive data types: circ...
Citations
| 1122 | Introduction to Functional Programming – Bird, Wadler - 1988 |
| 385 | Comprehending monads – WADLER - 1992 |
| 224 | Theorems for free – Wadler - 1989 |
| 162 | A system of constructor classes: overloading and implicit higher-order polymorphism – Jones - 1995 |
| 133 | An abstract view of programming languages – Moggi - 1990 |
| 63 | editors). Report on the Programming Language Haskell, A Non-strict Purely Functional Language (Version 1.2 – Hudak, Jones, et al. - 1992 |
| 52 | Scheme: an interpreter for extended lambda calculus – Sussman, Steele - 1975 |
| 41 | The New Hackers Dictionary – Raymond - 1991 |
| 27 | Definitional interpreters for higher order programming languages – Reynolds - 1972 |
| 10 | XP: A Common Lisp pretty printing system – Waters - 1989 |
| 8 | The Art of the Interpreter or, the Modularity – Steele, Sussmann - 1978 |
| 1 | Inside Macintosh (five volumes – Computer, Inc - 1985 |
| 1 | Personal communication to Guy Steele – Jones - 1993 |
| 1 | Personal communication to Guy Steele – Rees - 1993 |
| 1 | How to Compose Monads – Steele - 1993 |

