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'.
By:
Andrew D. Gordon (University of Cambridge) Imprint: Cambridge University Press Country of Publication: United Kingdom Volume: 8 Dimensions:
Height: 245mm,
Width: 175mm,
Spine: 10mm
Weight: 290g ISBN:9780521070072 ISBN 10: 0521070074 Series:Distinguished Dissertations in Computer Science Pages: 172 Publication Date:31 July 2008 Audience:
Professional and scholarly
,
Undergraduate
Format:Paperback Publisher's Status: Active
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.