EDP Sciences Journals List
Issue RAIRO-Theor. Inf. Appl.
Volume 36, Number 2, April-June 2002
Fixed Points in Computer Science (FICS'01)
Page(s) 155 - 180
DOI 10.1051/ita:2002008

Theoret. Informatics Appl. 36, 155-180 (2002)
DOI: 10.1051/ita:2002008

Semantics of value recursion for Monadic Input/Output

Levent Erkök1, John Launchbury2, 1 and Andrew Moran2

1  OGI School of Science and Engineering, OHSU; erkok@cse.ogi.edu.
2  Galois Connections, Inc.


Abstract
Monads have been employed in programming languages for modeling various language features, most importantly those that involve side effects. In particular, Haskell's IO monad provides access to I/O operations and mutable variables, without compromising referential transparency. Cyclic definitions that involve monadic computations give rise to the concept of value-recursion, where the fixed-point computation takes place only over the values, without repeating or losing effects. In this paper, we describe a semantics for a lazy language based on Haskell, supporting monadic I/O, mutable variables, usual recursive definitions, and value recursion. Our semantics is composed of two layers: a natural semantics for the functional layer, and a labeled transition semantics for the IO layer.


Mathematics Subject Classification. 68N18, 68Q55, 18C15


© EDP Sciences 2002


What is OpenURL?

The OpenURL standard is a protocol for transmission of metadata describing the resource that you wish to access. An OpenURL link contains article metadata and directs it to the OpenURL server of your choice. The OpenURL server can provide access to the resource and also offer complementary services (specific search engine, export of references...). The OpenURL link can be generated by different means.
  • If your librarian has set up your subscription with an OpenURL resolver, OpenURL links appear automatically on the abstract pages.
  • You can define your own OpenURL resolver with your EDPS Account. In this case your choice will be given priority over that of your library.
  • You can use an add-on for your browser (Firefox or I.E.) to display OpenURL links on a page (see http://www.openly.com/openurlref/). You should disable this module if you wish to use the OpenURL server that you or your library have defined.