MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Fold and Unfold for Program Semantics (1998) [22 citations — 6 self]

Download:
Download as a PDF | Download as a PS
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