Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming 2009
DOI: 10.1145/1596550.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...
2
2
1

Citation Types

0
28
0

Year Published

2011
2011
2024
2024

Publication Types

Select...
5
2
1

Relationship

0
8

Authors

Journals

citations
Cited by 68 publications
(32 citation statements)
references
References 39 publications
0
28
0
Order By: Relevance
“…The applications of delimited-control operators range from non-deterministic programming [21,45], partial evaluation [58,19], and normalization by evaluation [24] to concurrency [34], mobile code [89], linguistics [84], operating systems [43], and probabilistic programming [44]. Several variants of delimited-control operators are nowadays available in mainstream functional languages such as Haskell [25], OCaml [42], Racket [29], and Scala [76].…”
Section: Introductionmentioning
confidence: 99%
“…The applications of delimited-control operators range from non-deterministic programming [21,45], partial evaluation [58,19], and normalization by evaluation [24] to concurrency [34], mobile code [89], linguistics [84], operating systems [43], and probabilistic programming [44]. Several variants of delimited-control operators are nowadays available in mainstream functional languages such as Haskell [25], OCaml [42], Racket [29], and Scala [76].…”
Section: Introductionmentioning
confidence: 99%
“…The former approach is best illustrated by Concurrent ML constructs [35], implemented on top of SML/NJ's first-class continuations, or by the way coroutines are typically implemented in Scheme using the call/cc operator [20]. More recently, Scala uses first-class delimited continuations to implement concurrency primitives [18,36]. Anton and Thiemann build pure OCaml coroutines [6] on top of Kiselyov's delimcc library for delimited continuations [27].…”
Section: Related Workmentioning
confidence: 99%
“…In functional languages with a static type-checking, it is generally enforced by the monadic structure or the type system itself [10,36,43]. Interestingly enough, authors of similar systems for imperative languages commonly acknowledge that static checking would be preferable, but do not implement it [5,19].…”
Section: Related Workmentioning
confidence: 99%
“…Listing 4 is an excerpt of the preamble of the Java2Kdm transformation written in Koan. First, the set of trace links used by the transformation is declared, in this case type2datatype and method2method (lines [3][4][5][6][7][8][9][10][11][12][13][14]. Note that a Java method is related to two KDM entities, as explained before.…”
Section: Language Descriptionmentioning
confidence: 99%