Type, Ability, and Effect Systems: Perspectives on Purity, Semantics, and Expressiveness
By: Yuyan Bao, Tiark Rompf
Potential Business Impact:
Makes computer programs safer and easier to write.
Programming benefits from a clear separation between pure, mathematical computation and impure, effectful interaction with the world. Existing approaches to enforce this separation include monads, type-and-effect systems, and capability systems. All share a tension between precision and usability, and each one has non-obvious strengths and weaknesses. This paper aims to raise the bar in assessing such systems. First, we propose a semantic definition of purity, inspired by contextual equivalence, as a baseline independent of any specific typing discipline. Second, we propose that expressiveness should be measured by the degree of completeness, i.e., how many semantically pure terms can be typed as pure. Using this measure, we focus on minimal meaningful effect and capability systems and show that they are incomparable, i.e., neither subsumes the other in terms of expressiveness. Based on this result, we propose a synthesis and show that type, ability, and effect systems combine their respective strengths while avoiding their weaknesses. As part of our formal model, we provide a logical relation to facilitate proofs of purity and other properties for a variety of effect typing disciplines.
Similar Papers
Monadic type-and-effect soundness
Programming Languages
Makes computer code safer and more predictable.
Deciding not to Decide: Sound and Complete Effect Inference in the Presence of Higher-Rank Polymorphism
Programming Languages
Makes computer code easier to write and understand.
An effectful object calculus
Programming Languages
Lets programmers build complex programs more easily.