MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Building Interpreters by Composing Monads (1994) [27 citations — 0 self]

by Guy L. Steele ,  Jr.
In 21st Annual ACM Symposium on Principles of Programming Languages (POPL'94
Add To MetaCart

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