2017
DOI: 10.4204/eptcs.241.1
|View full text |Cite
|
Sign up to set email alerts
|

Generating Code with Polymorphic let: A Ballad of Value Restriction, Copying and Sharing

Abstract: Getting polymorphism and effects such as mutation to live together in the same language is a tale worth telling, under the recurring refrain of copying vs. sharing. We add new stanzas to the tale, about the ordeal to generate code with polymorphism and effects, and be sure it type-checks. Generating well-typed-by-construction polymorphic let-expressions is impossible in the Hindley-Milner type system: even the author believed that.The polymorphic-let generator turns out to exist. We present its derivation and … Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1

Citation Types

0
4
0

Year Published

2019
2019
2024
2024

Publication Types

Select...
3
2
1

Relationship

0
6

Authors

Journals

citations
Cited by 6 publications
(4 citation statements)
references
References 25 publications
0
4
0
Order By: Relevance
“…An exception, by Kokaji and Kameyama [2011], involves a language with polymorphism and control effects; their primary concern is the interaction of the value restriction and staging. Another, by Kiselyov [2017], considers the tripartite interaction of polymorphism, cross-stage persistence and mutable cells.…”
Section: Related Workmentioning
confidence: 99%
“…An exception, by Kokaji and Kameyama [2011], involves a language with polymorphism and control effects; their primary concern is the interaction of the value restriction and staging. Another, by Kiselyov [2017], considers the tripartite interaction of polymorphism, cross-stage persistence and mutable cells.…”
Section: Related Workmentioning
confidence: 99%
“…Their calculus is presented without explicit type abstraction and application. There is no discussion about cross-stage type variable references or qualified types and their primary concern, similar to Kiselyov [2017] is the interaction of the value restriction and staging. Our calculus in contrast, as it models Haskell, does not contain any effects so we have concentrated on qualified types.…”
Section: Related Workmentioning
confidence: 99%
“…The main difference is that M OC is much more dynamic: quoted code does not have to be completely closed when produced and well-scopedeness is checked dynamically, just before running the quoted code. This allows very dynamic behaviors such as automatic insertion of let-bindings [Kiselyov 2015] and dynamically determining staged stream pipelines [Kiselyov et al 2017]. One difference is the choice of universes: E has two universes, client and server, which are distinct.…”
Section: Staged Meta-programmingmentioning
confidence: 99%