000 02191cam a2200277 a 4500
008 100328s1994 enka b 001 0 eng
010 _a94026403
020 _a0521471036
035 _a(Sirsi) u5706
040 _aEG-CaNU
_c EG-CaNU
_d EG-CaNU
042 _ancode
082 0 4 _a005.711
_2 22
100 1 _aGordon, Andrew D.
_911363
245 1 0 _aFunctional programming and input/output /
_c Andrew D. Gordon.
260 _aCambridge [England] ;
_a New York :
_b Cambridge University Press,
_c 1994.
300 _axv, 155 p. ;
_c 26 cm.
490 0 _aDistinguished dissertations in computer science
504 _aIncludes bibliographical references (p. 137-147) and indexes.
505 _aIntroduction -- A calculus of recursive types -- A metalanguage for semantics -- Operational precongruence -- Theory of the metalanguage -- An operational theory of functional programming -- Four mechanisms for teletype I/O -- Monadic I/O -- Conclusion
520 _aA 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, for the first time, 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'.
650 0 _aFunctional programming (Computer science)
_911089
650 0 _aComputer input-output equipment.
_911364
596 _a1
999 _c4706
_d4706