Automatic binding time analysis for a typed &lgr;-calculus
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Automatic autoprojection of recursive equations with global variable and abstract data types
Science of Computer Programming
On the expressive power of programming languages
ESOP '90 Selected papers from the symposium on 3rd European symposium on programming
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
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Dynamic specialization in the Fabius system
ACM Computing Surveys (CSUR) - Special issue: electronic supplement to the September 1998 issue
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Type-based analysis of uncaught exceptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
A modal analysis of staged computation
Journal of the ACM (JACM)
A Hybrid Approach to Online and Offline Partial Evaluation
Higher-Order and Symbolic Computation
Tagless staged interpreters for typed languages
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From control effects to typed continuation passing
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Syntactic Theory of Dynamic Binding
Higher-Order and Symbolic Computation
Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
Lambda-My-Calculus: An Algorithmic Interpretation of Classical Natural Deduction
LPAR '92 Proceedings of the International Conference on Logic Programming and Automated Reasoning
Monadic Encapsulation with Stack of Regions
FLOPS '01 Proceedings of the 5th International Symposium on Functional and Logic Programming
Closed Types as a Simple Approach to Safe Imperative Multi-stage Programming
ICALP '00 Proceedings of the 27th International Colloquium on Automata, Languages and Programming
A temporal-logic approach to binding-time analysis
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Hume: a domain-specific language for real-time embedded systems
Proceedings of the 2nd international conference on Generative programming and component engineering
Extensional normalisation and type-directed partial evaluation for typed lambda calculus with sums
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Combinators for program generation
Journal of Functional Programming
Journal of Functional Programming
A Retrospective on Region-Based Memory Management
Higher-Order and Symbolic Computation
Programming graphics processors functionally
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Minimizing development and maintenance costs in supporting persistently optimized BLAS
Software—Practice & Experience - Research Articles
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
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
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
Journal of Functional Programming
Encapsulation of state with monad transformers
Encapsulation of state with monad transformers
Closing the stage: from staged code to typed closures
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Shifting the stage: staging with delimited control
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Direct implementation of shift and reset in the MinCaml compiler
Proceedings of the 2009 ACM SIGPLAN workshop on ML
On typing delimited continuations: three new solutions to the printf problem
Higher-Order and Symbolic Computation
Deriving compilers and virtual machines for a multi-level language
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Polymorphic delimited continuations
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Static analysis of multi-staged programs via unstaging translation
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Multi-stage programming with functors and monads: Eliminating abstraction overhead from generic code
Science of Computer Programming
Invited talk: resource-aware programming
ICESS'04 Proceedings of the First international conference on Embedded Software and Systems
ICESS'04 Proceedings of the First international conference on Embedded Software and Systems
Implicitly heterogeneous multi-stage programming
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Delimited control in OCaml, abstractly and concretely: system description
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Explicitly heterogeneous metaprogramming with MetaHaskell
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Shonan challenge for generative programming: short position paper
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
It is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Two pillars of this approach are types and effects. Typed multilevel languages such as MetaOCaml ensure safety and early error reporting: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness and expressivity: An effectful generator can resemble the textbook presentation of an algorithm, as is familiar to domain experts, yet insert let for memoization and if for bounds checking, as is necessary for efficiency. Together, types and effects enable structuring code generators as compositions of modules with well-defined interfaces, and hence scaling to large programs. However, blindly adding effects renders multilevel types unsound. We introduce the first multilevel calculus with control effects and a sound type system. We give small-step operational semantics as well as a one-pass continuation-passing-style translation. For soundness, our calculus restricts the code generator's effects to the scope of generated binders. Even with this restriction, we can finally write efficient code generators for dynamic programming and numerical methods in direct style, like in algorithm textbooks, rather than in continuation-passing or monadic style.