Functional Programming and Input/Output
A common attraction to functional programming is the ease with which proofs can be given of program properties. A common disappointment with functional programming is the difficulty of expressing input/output (I/O), while at the same time being able to verify programs. Here, the author shows how a theory of functional programming can be smoothly extended to admit both an operational semantics for functional I/O and verification of programs engaged in I/O. He obtains operational semantics for the three most widely implemented I/O mechanisms for lazy languages, and proves that the three are equivalent in expressive power. He develops semantics for a form of monadic I/O and verifies a simple programming example. These theories of functional I/O are based on an entirely operational theory of functional programming, developed using Abramsky's 'applicative bisimulation'.
- First ever semantics of the three most widely implemented I/O mechanisms in lazy functional languages
- Novel material on 'applicative bisimulation'
- Treats monadic denotational semantics for first time in book form
Product details
July 2008Paperback
9780521070072
172 pages
245 × 175 × 10 mm
0.29kg
15 tables
Available
Table of Contents
- Preface
- 1. Introduction
- 2. A calculus of recursive types
- 3. A metalanguage for semantics
- 4. Operational precongruence
- 5. Theory of the metalanguage
- 6. An operational theory of functional programming
- 7. Four mechanisms for teletype I/O
- 8. Monadic I/O
- 9. Conclusion
- Bibliography
- Notation
- Index.