Download:
|
by Graham Hutton
In Proc. 3rd ACM SIGPLAN International Conference on Functional Programming
http://www.cs.nott.ac.uk/~gmh//semantics.ps
Add To MetaCart
Abstract:
gmh In this paper we explain how recursion operators can be used to structure and reason about program semantics within a functional language. In particular, we show how the recursion operator fold can be used to structure denotational semantics, how the dual recursion operator unfold can be used to structure operational semantics, and how algebraic properties of these operators can be used to reason about program semantics. The techniques are explained with the aid of two main examples, the first concerning arithmetic expressions, and the second concerning Milner's concurrent language CCS. The aim of the paper is to give functional programmers new insights into recursion operators, program semantics, and the relationships between them.
Citations
|
2762
|
Communication and Concurrency
– Milner
- 1989
|
|
1128
|
Monads for functional programming
– Wadler
- 1992
|
|
1064
|
A structural approach to operational semantics
– Plotkin
- 1981
|
|
275
|
Functional programming with bananas, lenses, envelopes and barbed wire
– Meijer, Fokkinga, et al.
- 1991
|
|
275
|
Denotational Semantics: a Methodology for Language Development
– Schmidt
- 1986
|
|
179
|
A short cut to deforestation
– Gill, Launchbury, et al.
- 1993
|
|
121
|
A fold for all seasons
– Sheard, Fegaras
- 1993
|
|
90
|
Algorithmics - towards programming as a mathematical activity
– Meertens
- 1986
|
|
90
|
Towards a mathematical operational semantics
– Turi, Plotkin
- 1997
|
|
84
|
Warm fusion: deriving build-catas from recursive definitions
– Launchbury, Sheard
- 1995
|
|
78
|
Algebraic data types and program transformation
– Malcolm
- 1990
|
|
74
|
Bananas in space: Extending fold and unfold to exponential types
– Meijer, Hutton
- 1995
|
|
72
|
Circuit design in Ruby
– Jones, Sheeran
- 1988
|
|
65
|
and Oege de Moor. Algebra of Programming
– Bird
- 1997
|
|
50
|
Initial algebra and final co-algebra semantics for concurrency
– Rutten, Turi
- 1994
|
|
43
|
Calculating Compilers
– Meijer
- 1992
|
|
20
|
Designing circuits by calculation
– Jones
- 1990
|
|
8
|
Categories for the Working Mathematician. Number 5
– Maclane
- 1971
|
|
3
|
et al. The Haskell language report, version 1.4. Available on the World-Wide-Web from http://www.haskell.org
– Peterson
- 1997
|