Side eeects in imperative programming languages are ubiquitous, which makes it diicult to reason about programs in other than operational terms. Functional programming languages, on the other hand, claim the advantage that equational logics are suucient for reasoning , but at the price that useful eeects, such as interactive input, exceptions, and explicit updates of state cannot be accommodated. This paper shows a way to bring these two worlds of programming style closer together , by characterizing the eeects-producing semantics features that one wishes to use to design useful and eecient programs as algebras, whose axioms are given by sets of rst-order equations whose variables range over program terms.
[1]
Robin Milner,et al.
A Theory of Type Polymorphism in Programming
,
1978,
J. Comput. Syst. Sci..
[2]
Gérard Berry,et al.
Synchronous programming of reactive systems: an introduction to ESTEREL
,
1988
.
[3]
Philip Wadler,et al.
The essence of functional programming
,
1992,
POPL '92.
[4]
Paul Hudak,et al.
Monad transformers and modular interpreters
,
1995,
POPL '95.
[5]
P. Jouvelot,et al.
Polymorphic Type, Region and Eeect Inference Polymorphic Type, Region and Eeect Inference
,
2007
.