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.
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.
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.
Deterministic parallelism via liquid effects
This work presents Liquid Effects, a type-and-effect system based on refinement types which allows for fine-grained, low-level, shared memory multi-threading while statically guaranteeing that a program is deterministic and implemented in CSOLVE, a refinement type inference system for C programs.
A type and effect system for deterministic parallel Java
It is demonstrated that a practical type and effect system can simplify parallel programming by guaranteeing deterministic semantics with modular, compile-time type checking even in a rich, concurrent object-oriented language such as Java.
Effects as sessions, sessions as effects
An embedding from PCF is given into a session-typed pi-calculus (session calculus), showing that session types are powerful enough to express effects and a reverse embedding is given, from the session calculus back into PCF, by instantiating PCF with concurrency primitives and its effect system with asession-like effect algebra.