Building program generators that do not duplicate generated code can be challenging. At the same time, code duplication can easily increase both generation time and runtime of generated programs by an exponential factor. We identify an instance of this problem that can arise when memoized functions are staged. Without addressing this problem, it would be impossible to effectively stage dynamic programming algorithms. Intuitively, direct staging undoes the effect of memoization. To solve this problem once and for all, and for any function that uses memoization, we propose a staged monadic combinator library. Experimental results confirm that the library works as expected. Preliminary results also indicate that the library is useful even when...
In this paper we propose a flexible and elegant design for list-based monadic ("karmic") computation...
International audienceBoolean reversible circuits are boolean circuits made of reversible elementary...
Many functions perform redundant calculations. Within a single function invocation, several sub-func...
Applications of dynamic programming (DP) algorithms are numerous, and include genetic engineering an...
The efficiency of parsers can be improved by adding bookkeeping features that eliminate unnecessary ...
AbstractLanguage processors may be implemented directly as functions. In a programming language that...
International audienceMemoization is the technique of saving the results of computations so that fut...
AbstractWe use multi-stage programming, monads and Ocaml’s advanced module system to demonstrate how...
AbstractThe structure of monadic functional programs allows the integration of many different featur...
It is shown that a process similar to Earley's algorithm can be generated by a simple top-down ...
The structure of monadic functional programs allows the integration of many different features by ju...
Code generation is the leading approach to making high-perfor-mance software reusable. Effects are i...
Partial evaluation allows for specialization of program fragments. This can be realized by staging, ...
National audienceMonadic programming is a popular way to embed effectful computations in purely func...
Some programs are not merely sets of batch instructions performed in isolation. They interact, eithe...
In this paper we propose a flexible and elegant design for list-based monadic ("karmic") computation...
International audienceBoolean reversible circuits are boolean circuits made of reversible elementary...
Many functions perform redundant calculations. Within a single function invocation, several sub-func...
Applications of dynamic programming (DP) algorithms are numerous, and include genetic engineering an...
The efficiency of parsers can be improved by adding bookkeeping features that eliminate unnecessary ...
AbstractLanguage processors may be implemented directly as functions. In a programming language that...
International audienceMemoization is the technique of saving the results of computations so that fut...
AbstractWe use multi-stage programming, monads and Ocaml’s advanced module system to demonstrate how...
AbstractThe structure of monadic functional programs allows the integration of many different featur...
It is shown that a process similar to Earley's algorithm can be generated by a simple top-down ...
The structure of monadic functional programs allows the integration of many different features by ju...
Code generation is the leading approach to making high-perfor-mance software reusable. Effects are i...
Partial evaluation allows for specialization of program fragments. This can be realized by staging, ...
National audienceMonadic programming is a popular way to embed effectful computations in purely func...
Some programs are not merely sets of batch instructions performed in isolation. They interact, eithe...
In this paper we propose a flexible and elegant design for list-based monadic ("karmic") computation...
International audienceBoolean reversible circuits are boolean circuits made of reversible elementary...
Many functions perform redundant calculations. Within a single function invocation, several sub-func...