2019
DOI: 10.1145/3290319
|View full text |Cite
|
Sign up to set email alerts
|

Abstracting algebraic effects

Abstract: Proposed originally by Plotkin and Pretnar, algebraic effects and their handlers are a leading-edge approach to computational effects: exceptions, mutable state, nondeterminism, and such. Appreciated for their elegance and expressiveness, they are now progressing into mainstream functional programming languages. In this paper, we introduce and examine programming language constructs that back adoption of programming with algebraic effects on a larger scale in a modular fashion by providing mechanisms for abstr… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
42
0

Year Published

2019
2019
2023
2023

Publication Types

Select...
5
2

Relationship

1
6

Authors

Journals

citations
Cited by 32 publications
(42 citation statements)
references
References 26 publications
0
42
0
Order By: Relevance
“…There are three kinds in the calculus: types (T), effects (E), and signatures (S). In the core calculus, one does not declare effects (in contrast to, e.g., [Biernacki et al 2019]), and signatures play a role similar to type schemes in the HindleyśMilner type system: kept in the context, they describe the (possibly polymorphic) type of a particular instance, which is instantiated every time the operation is used. Note that there is no kind for instances: in the syntax and type system of the core calculus, instances exist only as variables coupling operations and handlers, and are never instantiated with anything else than other instance variables (this is no longer the case in the generative operational semantics in Section 5, which needs some additional syntactic elements).…”
Section: (Type Variables)mentioning
confidence: 99%
See 3 more Smart Citations
“…There are three kinds in the calculus: types (T), effects (E), and signatures (S). In the core calculus, one does not declare effects (in contrast to, e.g., [Biernacki et al 2019]), and signatures play a role similar to type schemes in the HindleyśMilner type system: kept in the context, they describe the (possibly polymorphic) type of a particular instance, which is instantiated every time the operation is used. Note that there is no kind for instances: in the syntax and type system of the core calculus, instances exist only as variables coupling operations and handlers, and are never instantiated with anything else than other instance variables (this is no longer the case in the generative operational semantics in Section 5, which needs some additional syntactic elements).…”
Section: (Type Variables)mentioning
confidence: 99%
“…This gives the programmer a lot of expressiveness, but it is not possible to track such instances using a type-and-effect system, since it is impossible to statically determine which instances will be handled and when. Biernacki et al [2019] introduced effect coercions, which are similar to the slightly more expressive adaptors proposed later by Convent et al [2019]. These two solutions boil down to recognising each use of an effect by its position in the row of effects, resulting in something akin to de Bruijn indices on the level of types, which is rather expressive and well-behaved on the theoretical side, but quite impractical in real life.…”
Section: Introductionmentioning
confidence: 99%
See 2 more Smart Citations
“…Existing implementations of languages with effect handlers either completely lack a static effect system-this includes Multicore OCaml (Dolan et al, 2014), Eff (Bauer & Pretnar, 2015), embeddings of Eff in OCaml (Kiselyov & Sivaramakrishnan, 2016), and previous versions of Effekt (Brachthäuser & Schuster, 2017;Brachthäuser et al, 2018)-or they do not have sufficient support for effect polymorphism (Kammar et al, 2013;Inostroza & van der Storm, 2018). Languages and libraries with effect systems like Extensible Effects (Kiselyov et al, 2013), Koka (Leijen, 2017c), Links (Hillerström et al, 2017), Frank (Lindley et al, 2017), and Helium (Biernacki et al, 2019) require explicit lifting annotations to encapsulate effects in effectful higher-order functions, like the function mapM above. Without such manual liftings, the implementation detail of effects used within mapM would leak into its type signature.…”
Section: Effekt -Effect Handlers and Capability Passingmentioning
confidence: 99%