Side Effects

This section covers basic topics and illustrates the technical notion of a computational effect with several mathematical and programming examples. In everyday language, a “side effect” refers to the unintended or unforeseen consequences of an action. By analogy, in order to identify the side effect of a given computation, it is first necessary to isolate the “publicly stated” or “publicly expected” actions of the computation. Once this is done, all other actions performed by the computation are actions that occur as side effects, or more accurately these actions represent computational effects.

[1]  Philip Wadler,et al.  Comprehending monads , 1990, LISP and Functional Programming.

[2]  Amr Sabry,et al.  Correctness of Monadic State: An Imperative Call-by-Need Calculus , 1997, Electron. Notes Theor. Comput. Sci..

[3]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[4]  Hayo Thielecke,et al.  Typed Exeptions and Continuations Cannot Macro-Express Each Other , 1999, ICALP.

[5]  Olivier Danvy,et al.  Abstracting control , 1990, LISP and Functional Programming.

[6]  Pierre Jouvelot,et al.  Polymorphic type, region and effect inference , 1992, Journal of Functional Programming.

[7]  Marinus J. Plasmeijer,et al.  Uniqueness Typing Simplified , 2008, IFL.

[8]  Martin C. Rinard,et al.  Purity and Side Effect Analysis for Java Programs , 2005, VMCAI.

[9]  S. Shieber,et al.  Linguistic side effects , 2005 .

[10]  Johan Jeuring,et al.  Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text , 1995 .

[11]  Simon L. Peyton Jones,et al.  State in Haskell , 1995, LISP Symb. Comput..

[12]  Pierre Jouvelot,et al.  The type and effect discipline , 1992, [1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science.

[13]  Flemming Nielson,et al.  Type and effect systems - behaviours for concurrency , 1999 .

[14]  Andrew D. Gordon,et al.  A Type and Effect Analysis of Security Protocols , 2001, SAS.

[15]  François Pessaux,et al.  Type-based analysis of uncaught exceptions , 2000, TOPL.

[16]  Matthias Felleisen,et al.  On the Expressive Power of Programming Languages , 1990, European Symposium on Programming.

[17]  Flemming Nielson,et al.  Type and Effect Systems , 1999, Correct System Design.

[18]  Amr Sabry,et al.  Monadic encapsulation of effects: a revised approach (extended version) , 2001, J. Funct. Program..

[19]  Matthias Felleisen,et al.  The theory and practice of first-class prompts , 1988, POPL '88.

[20]  James Cheney,et al.  Region-based memory management in cyclone , 2002, PLDI '02.

[21]  Amr Sabry,et al.  Delimited dynamic binding , 2006, ICFP '06.

[22]  Amr Sabry,et al.  Backtracking, interleaving, and terminating monad transformers: (functional pearl) , 2005, ICFP '05.

[23]  Tachio Terauchi,et al.  Witnessing side effects , 2008 .

[24]  Cormac Flanagan,et al.  A type and effect system for atomicity , 2003, PLDI.

[25]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..

[26]  Ralf Hinze,et al.  Deriving backtracking monad transformers , 2000, ICFP '00.

[27]  John Hughes,et al.  Generalising monads to arrows , 2000, Sci. Comput. Program..

[28]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

[29]  Gordon D. Plotkin,et al.  Notions of Computation Determine Monads , 2002, FoSSaCS.

[30]  E. Manes Algebraic Theories in a Category , 1976 .

[31]  Philip Wadler Monads for Functional Programming , 1995, Advanced Functional Programming.

[32]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[33]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[34]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[35]  Andrzej Filinski,et al.  Representing monads , 1994, POPL '94.