2005
DOI: 10.1007/11561347_18
|View full text |Cite
|
Sign up to set email alerts
|

Multi-stage Programming with Functors and Monads: Eliminating Abstraction Overhead from Generic Code

Abstract: We use multi-stage programming, monads and Ocaml's advanced module system to demonstrate how to eliminate all abstraction overhead from generic programs while avoiding any inspection of the resulting code. We demonstrate this clearly with Gaussian Elimination as a representative family of symbolic and numeric algorithms. We parameterize our code to a great extent -over domain, input and permutation matrix representations, determinant and rank tracking, pivoting policies, result types, etc. -at no run-time cost… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1

Citation Types

0
2
0

Year Published

2006
2006
2018
2018

Publication Types

Select...
5
2

Relationship

2
5

Authors

Journals

citations
Cited by 17 publications
(2 citation statements)
references
References 37 publications
(53 reference statements)
0
2
0
Order By: Relevance
“…Combining the techniques in this paper with Carette and Kiselyov's [2005] modular approach by instantiating numeric signatures with free extensions is a promising avenue for future exploration. Yallop [2017] uses several partially-static structures in the staging of an implementation of the Scrap Your Boilerplate generic programming library, including a partially-static structure for monoids that reassociates subexpressions similarly to the free extension presented here.…”
Section: Related Workmentioning
confidence: 99%
“…Combining the techniques in this paper with Carette and Kiselyov's [2005] modular approach by instantiating numeric signatures with free extensions is a promising avenue for future exploration. Yallop [2017] uses several partially-static structures in the staging of an implementation of the Scrap Your Boilerplate generic programming library, including a partially-static structure for monoids that reassociates subexpressions similarly to the free extension presented here.…”
Section: Related Workmentioning
confidence: 99%
“…The authors were convinced that partial evaluation (and metaprogramming in general [1,2]), should be a very powerful tool when combined with a Computer Algebra System (CAS). Certainly code generation from a CAS had already shown itself [3,4] to be a successful technique.…”
Section: Introductionmentioning
confidence: 99%