Numerical analysis: 4th ed
Notions of computation and monads
Information and Computation
AXIOM: the scientific computation system
AXIOM: the scientific computation system
Improving binding times without explicit CPS-conversion
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM SIGSAM Bulletin
Algorithm-oriented generic libraries
Software—Practice & Experience
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Building domain-specific embedded languages
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Matrix computations (3rd ed.)
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
An Automatic Program Generator for Multi-Level Specialization
Lisp and Symbolic Computation
Computers in Physics
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
On the criteria to be used in decomposing systems into modules
Communications of the ACM
The boost graph library: user guide and reference manual
The boost graph library: user guide and reference manual
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ISAAC '88 Proceedings of the International Symposium ISSAC'88 on Symbolic and Algebraic Computation
Aspect-Oriented Programming of Sparse Matrix Code
ISCOPE '97 Proceedings of the Scientific Computing in Object-Oriented Parallel Environments
ISCOPE '98 Proceedings of the Second International Symposium on Computing in Object-Oriented Parallel Environments
Multistage programming: its theory and applications
Multistage programming: its theory and applications
Implementing multi-stage languages using ASTs, Gensym, and reflection
Proceedings of the 2nd international conference on Generative programming and component engineering
The LAPACK for Clusters Project: An Example of Self Adapting Numerical Software
HICSS '04 Proceedings of the Proceedings of the 37th Annual Hawaii International Conference on System Sciences (HICSS'04) - Track 9 - Volume 9
A methodology for generating verified combinatorial circuits
Proceedings of the 4th ACM international conference on Embedded software
Active libraries and universal languages
Active libraries and universal languages
A monadic approach for avoiding code duplication when staging memoized functions
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
When and how to develop domain-specific languages
ACM Computing Surveys (CSUR)
Gaussian elimination: a case study in efficient genericity with MetaOCaml
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
In search of a program generator to implement generic transformations for high-performance computing
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
On the Design and Development of Program Families
IEEE Transactions on Software Engineering
Multi-stage programming with functors and monads: eliminating abstraction overhead from generic code
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Implicitly heterogeneous multi-stage programming
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Hierarchical representations with signatures for large expression management
AISC'06 Proceedings of the 8th international conference on Artificial Intelligence and Symbolic Computation
Shifting the stage: staging with delimited control
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
MathScheme: project description
MKM'11 Proceedings of the 18th Calculemus and 10th international conference on Intelligent computer mathematics
Shifting the stage: Staging with delimited control
Journal of Functional Programming
Theory presentation combinators
CICM'12 Proceedings of the 11th international conference on Intelligent Computer Mathematics
Combinators for impure yet hygienic code generation
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
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. Because the resulting code is generated just right and not changed afterward, MetaOCaml guarantees that the generated code is well-typed. We further demonstrate that various abstraction parameters (aspects) can be made orthogonal and compositional, even in the presence of name-generation for temporaries, and ''interleaving'' of aspects. We also show how to encode some domain-specific knowledge so that ''clearly wrong'' compositions can be rejected at or before generation time, rather than during the compilation or running of the generated code.