We show the benefits of applying modular monadic semantics to compiler construction. Modular monadicsemantics allows us to define a languagewith a rich set of features from reusablebuilding blocks, and use program transformation and equational reasoning to improve code. Compared to denotational semantics, reasoning in monadic style offers the added benefits of highly modularized proofs and more widely applicable results. To demonstrate, we present an axiomatization of environments, and use it to prove the correctness of a well-known compilation technique. The monadic approach also facilitates generating code in various target languages with different sets of built-in features.
|
1128
|
Monads for functional programming
– Wadler
- 1992
|
|
393
|
Comprehending monads
– Wadler
- 1992
|
|
215
|
Report on the Programming Language Haskell, A Non-strict, Purely Functional Language
– Hudak, Jones, et al.
- 1992
|
|
156
|
Monad transformers and modular interpreters
– Liang, Hudak, et al.
- 1995
|
|
150
|
Reasoning about programs in continuation-passing style
– Sabry, Felleisen
- 1992
|
|
135
|
An abstract view of programming languages
– Moggi
- 1990
|
|
118
|
Automatic autoprojection of recursive equations with global variables and abstract data types
– Bondorf, Danvy
- 1991
|
|
112
|
closure-passing style
– Appel, Jim, et al.
- 1989
|
|
111
|
Mix: a self-applicable partial evaluator for experiments in compiler generation
– Jones, Sestoft, et al.
- 1989
|
|
98
|
Automatic online partial evaluation
– Weise, Conybeare, et al.
|
|
88
|
A Simple Applicative Language: MINI-ML
– Clement
- 1986
|
|
75
|
A generic account of continuationpassing styles
– Hatcliff, Danvy
- 1994
|
|
71
|
Realistic compilation by program transformation
– Kelsey, Hudak
- 1989
|
|
56
|
Composing monads
– Jones, Duponcheel
- 1993
|
|
41
|
Compilers and staging transformations
– Jørring, Scherlis
- 1986
|
|
30
|
Actress: an action semantics directed compiler generator
– Brown, Moura, et al.
- 1992
|
|
25
|
Abstract Semantic Algebras
– Mosses
- 1982
|
|
25
|
Building interpreters by composing monads
– Jr
- 1994
|
|
24
|
Provably Correct Compiler Generation
– Palsberg
- 1992
|
|
24
|
A semantics-directed compiler generator
– Paulson
- 1982
|
|
20
|
Compiling actions by partial evaluation
– Bondorf, Palsberg
- 1993
|
|
18
|
Action Semantics, volume 26 of Cambridge Tracts
– Mosses
- 1992
|
|
17
|
Realistic Compiler Generation. Foundations of Computing Series
– Lee
- 1989
|
|
14
|
A tour of Schism
– Consel
- 1993
|
|
11
|
More advice on proving a compiler correct: Improve a correct compiler
– Meijer
- 1994
|
|
9
|
Compiling monads
– Danvy, Koslowski, et al.
- 1991
|
|
7
|
SIS-semantics implementation system, reference manual and users guide
– Mosses
- 1979
|
|
6
|
Modular denotational semantics. Unpublished manuscript
– Espinosa
- 1993
|
|
6
|
Mutable abstract datatypes
– Hudak
- 1992
|
|
5
|
A Short Proof of the Lexical Addressing Algorithm
– Wand
- 1990
|
|
4
|
OASIS: An optimizing action-based compiler generator
– ��rb��k
- 1994
|
|
2
|
Self-applicable partial evaluation for pure lambda calculus
– Torben
- 1992
|
|
1
|
Denotational Semantics: The Scott-Strachey Approach to ProgrammingLanguageTheory
– JosephStoy
- 1977
|
|
1
|
A semanticprototypingsystem
– Wand
- 1984
|