Results 1 -
2 of
2
Monad Transformers and Modular Interpreters
- In Proceedings of the 22nd ACM Symposium on Principles of Programming Languages. ACMPress
, 1995
"... We show how a set of building blocks can be used to construct programming language interpreters, and present implementations of such building blocks capable of supporting many commonly known features, including simple expressions, three different function call mechanisms (call-by-name, callby -value ..."
Abstract
-
Cited by 213 (10 self)
- Add to MetaCart
We show how a set of building blocks can be used to construct programming language interpreters, and present implementations of such building blocks capable of supporting many commonly known features, including simple expressions, three different function call mechanisms (call-by-name, callby -value and lazy evaluation), references and assignment, nondeterminism, first-class continuations, and program tracing. The underlying mechanism of our system is monad transformers, a simple form of abstraction for introducing a wide range of computational behaviors, such as state, I/O, continuations, and exceptions. Our work is significant in the following respects. First, we have succeeded in designing a fully modular interpreter based on monad transformers that includes features missing from Steele's, Espinosa's, and Wadler's earlier efforts. Second, we have found new ways to lift monad operations through monad transformers, in particular difficult cases not achieved in Moggi's original work. ...
Object-Oriented Software Specification in Programming Language Design and Implementation
"... An object-oriented formal specification workbench is proposed for defining the syntax and semantics of programming languages, using which the formal properties of different languages can be elaborated and analyzed. Our specification approach is an object-oriented representation structured around a d ..."
Abstract
- Add to MetaCart
An object-oriented formal specification workbench is proposed for defining the syntax and semantics of programming languages, using which the formal properties of different languages can be elaborated and analyzed. Our specification approach is an object-oriented representation structured around a denotational semantics methodology, which abstracts out various common details so that formal syntax and semantics can be defined elegantly. Specific details can be inherited and specialized in defining the semantics of various programming languages, and the reusability and modifiability of many programming languages features can be manifested across language paradigms. Furthermore, prototype implementations for these languages may be automatically developed from the formal specifications, providing a mechanism for compiler/interpreter reuse at the specification level.

