Abstract
In functional programming, monadic characterizations of computational effects are normally understood denotationally: they describe how an effectful program can be systematically expanded or translated into a larger, pure program, which can then be evaluated according to an effect-free semantics. Any effect-specific operations expressible in the monad are also given purely functional definitions, but these definitions are only directly executable in the context of an already translated program. This approach thus takes an inherently Church-style view of effects: the nominal meaning of every effectful term in the program depends crucially on its type. We present here a complementary, operational view of monadic effects, in which an effect definition directly induces an imperative behavior of the new operations expressible in the monad. This behavior is formalized as additional operational rules for only the new constructs; it does not require any structural changes to the evaluation judgment. Specifically, we give a small-step operational semantics of a prototypical functional language supporting programmer-definable, layered effects, and show how this semantics naturally supports reasoning by familiar syntactic techniques, such as showing soundness of a Curry-style effect-type system by the progress〈preservation method.
Original language | English |
---|---|
Title of host publication | POPL'10 : Proceedings of the 37th annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages |
Number of pages | 12 |
Publisher | Association for Computing Machinery |
Publication date | Jan 2010 |
Pages | 483-494 |
ISBN (Print) | 978-1-60558-479-9 |
DOIs | |
Publication status | Published - Jan 2010 |
Event | 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - Madrid, Spain Duration: 17 Jan 2010 → 23 Jan 2010 Conference number: 37 |
Conference
Conference | 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages |
---|---|
Number | 37 |
Country/Territory | Spain |
City | Madrid |
Period | 17/01/2010 → 23/01/2010 |