2017
DOI: 10.1145/3110273
|View full text |Cite
|
Sign up to set email alerts
|

Staged generic programming

Abstract: Generic programming libraries such as Scrap Your Boilerplate eliminate the need to write repetitive code, but typically introduce significant performance overheads. This leaves programmers with the regrettable choice between writing succinct but slow programs and writing tedious but efficient programs.Applying structured multi-stage programming techniques transforms Scrap Your Boilerplate from an inefficient library into a typed optimising code generator, bringing its performance in line with hand-written code… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
2

Citation Types

0
16
0

Year Published

2018
2018
2024
2024

Publication Types

Select...
4
3
1

Relationship

0
8

Authors

Journals

citations
Cited by 23 publications
(16 citation statements)
references
References 38 publications
(38 reference statements)
0
16
0
Order By: Relevance
“…In terms of overall strategy, the inlining method could not be used on the Scrap Your Boilerplate (SYB) generics library by Lämmel and Peyton Jones [2003], because SYB relies on runtime casts [Lämmel and Peyton Jones 2004] (although they are type safe). More recently, Yallop [2017] showed how this could be avoided in a version of SYB in OCaml where type equality tests are witnessed by GADTs. From there, the features of MetaOCaml [Kiselyov 2014] are used for staging.…”
Section: Related Workmentioning
confidence: 99%
“…In terms of overall strategy, the inlining method could not be used on the Scrap Your Boilerplate (SYB) generics library by Lämmel and Peyton Jones [2003], because SYB relies on runtime casts [Lämmel and Peyton Jones 2004] (although they are type safe). More recently, Yallop [2017] showed how this could be avoided in a version of SYB in OCaml where type equality tests are witnessed by GADTs. From there, the features of MetaOCaml [Kiselyov 2014] are used for staging.…”
Section: Related Workmentioning
confidence: 99%
“…Ofenbeck et al [2017] and Amin and Rompf [2018] discussed staging for generic programming as well as stage polymorphism in LMS. Multi-stage programming has been widely used to improve the performance in many other domains, such as optimizing compilers or domain-specific languages [Carette et al 2009;Sujeeth et al , 2013, numerical computation [Aktemur et al 2013;Kiselyov 2018], generic programming [Ofenbeck et al 2017;Yallop 2017], data processing [Jonnalagedda et al 2014;Kiselyov et al 2017], query compilation in databases , etc.…”
Section: Related Workmentioning
confidence: 99%
“…It is more desirable to have the flexibility we provide in order to specify precisely at use-sites the mode of inspection. Yallop [2017] discusses how structured multi-staged programming techniques can be used to improve SYB. The work observes the benefits which can be gained from a simple binding time analysis.…”
Section: Related Workmentioning
confidence: 99%
“…We are not the first to optimise SYB, and like our predecessors [Adams et al 2015;Yallop 2017], we make use of the fact that much of the information required for traversals is statically known, thereby avoiding dynamic checks at run-time. Our innovation is to work with types and use these to infer generated code generically in a suitable form for an automatic evaluator to optimise effectively.…”
Section: Introductionmentioning
confidence: 99%