2009
DOI: 10.1145/1631687.1596596
|View full text |Cite
|
Sign up to set email alerts
|

Implementing first-class polymorphic delimited continuations by a type-directed selective CPS-transform

Abstract: We describe the implementation of first-class polymorphic delimited continuations in the programming language Scala. We use Scala's pluggable typing architecture to implement a simple type and effect system, which discriminates expressions with control effects from those without and accurately tracks answer type modification incurred by control effects. To tackle the problem of implementing first-class continuations under the adverse conditions brought upon by the Java VM, we employ a selective CPS transform, … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

2
24
0

Year Published

2010
2010
2020
2020

Publication Types

Select...
4
2
1

Relationship

2
5

Authors

Journals

citations
Cited by 26 publications
(26 citation statements)
references
References 43 publications
2
24
0
Order By: Relevance
“…Providing syntactic support for these encodings may provide an interesting alternative to our encoding using computation builder. Interestingly, our Run operation seems related to reset of delimited continuations [19] and our Delay is similar to the reify operation of Filinsky [4].…”
Section: Related Workmentioning
confidence: 65%
“…Providing syntactic support for these encodings may provide an interesting alternative to our encoding using computation builder. Interestingly, our Run operation seems related to reset of delimited continuations [19] and our Delay is similar to the reify operation of Filinsky [4].…”
Section: Related Workmentioning
confidence: 65%
“…Still, the most important feature for the LDL transformation is allowing plugins to extend the vanilla subtyping logic in the Scala compiler by providing custom and phase-dependent rules for annotated types. Using this framework, Rytz created a purity and effects checker [60] that uses annotations to track side-effecting code, while Rompf implemented a type-driven continuation-passing style (CPS) transformation [56].…”
Section: Scala Compiler Plug-insmentioning
confidence: 99%
“…In the context of Java, type annotations have been used to selectively add reified type argument information to erased generics [27]. In the context of Scala, annotated types have been used to track and limit the side-effects of expressions [60,61], to designate macro expansions [18] and to trigger continuation-passing-style transformations [56].…”
Section: Related Workmentioning
confidence: 99%
“…Fortunately, we can map the let-insertion monad into direct style using Filinski's monadic reflection [17,18]. Implementing the corresponding reflect and reify operators would be straightforward using Scala's support for delimited continuations [41]. But it turns out we do not even need delimited control, since we can model the desired behavior directly using mutable state and a by-name parameter for reify (see Section 6.2).…”
Section: Deep Reuse Of Bindings and Statement Ordermentioning
confidence: 99%