Polymorphic Iterable Sequential Effect Systems

  title={Polymorphic Iterable Sequential Effect Systems},
  author={Colin S. Gordon},
  journal={ACM Transactions on Programming Languages and Systems (TOPLAS)},
  pages={1 - 79}
  • Colin S. Gordon
  • Published 6 August 2018
  • Mathematics
  • ACM Transactions on Programming Languages and Systems (TOPLAS)
Effect systems are lightweight extensions to type systems that can verify a wide range of important properties with modest developer burden. But our general understanding of effect systems is limited primarily to systems where the order of effects is irrelevant. Understanding such systems in terms of a semilattice of effects grounds understanding of the essential issues and provides guidance when designing new effect systems. By contrast, sequential effect systems—where the order of effects is… 
3 Citations

Figures from this paper

Lifting Sequential Effects to Control Operators

While the authors now understand the essential denotational (categorical) models fairly well, application of these ideas to real software is hampered by the variety of source level control flow constructs and control operators in real software.

Reachability types: tracking aliasing and separation in higher-order functional programs

A new type system is presented, λ* , which enables expressive ownership-style reasoning across higher-order functions and extends the type system with an expressive flow-sensitive effect system, which enables flavors of move semantics and ownership transfer.



A Generic Approach to Flow-Sensitive Polymorphic Effects

It is shown that effect quantales provide a free, general notion of iterating a sequential effect, and that for systems the authors consider the derived iteration agrees with the manually designed iteration operators in prior work, which provides guidance on non-obvious points of designing order-sensitive effect systems.

A generic type-and-effect system

A generic type-and-effect system is presented, which is parameterized by the syntax of effects to track and by two functions that together specify the effect discipline to be statically enforced, and how a standard form of type soundness is ensured by requiring these two functions to obey a few natural monotonicity requirements.

The sequential semantics of producer effect systems

This paper presents its semantic formalization for producer effect systems, which it is called a productor, and proves its maximal generality by focusing on only sequential composition of effectful computations, consequently guaranteeing that the existing monadic techniques are specializations of productors.

Polymorphic effect systems

The effect system the authors describe performs certain kinds of side-effect analysis that were not previously feasible and can be used effectively to compile programs for parallel computers.

A theory of gradual effect systems

A theory of gradual effect checking is developed, which makes it possible to incrementally annotate and statically check effects, while still rejecting statically inconsistent programs.

Customizable gradual polymorphic effects for Scala

The first implementation of gradual effect checking, for Scala, is presented, which supports both effect polymorphism and a domain-specific language called Effscript to declaratively define and customize effect disciplines.

Effect Systems Revisited - Control-Flow Algebra and Semantics

This work identifies a form of graded joinads as the appropriate structure for unifying effect analysis and semantics for a control-flow algebra of effects for effectful programming with sequencing, alternation and parallelism.

Lightweight Polymorphic Effects

This work proposes a new syntactically lightweight technique for writing effect-polymorphic functions and shows its independence from a specific kind of side-effect by embedding it into a generic and extensible framework for checking effects of multiple domains.

Monads in action

This work gives a small-step operational semantics of a prototypical functional language supporting programmer-definable, layered effects, and shows 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.

Types and trace effects of higher order programs

A type safety result is proven for both unification and subtyping constraint versions of the type system, ensuring that statically well-typed programs do not contain trace event checks that can fail at run-time.