Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formally based profiling for higher-order functional languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
A unified computation model for functional and logic programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiling Multi-Paradigm Declarative Programs into Prolog
FroCoS '00 Proceedings of the Third International Workshop on Frontiers of Combining Systems
Symbolic Profiling for Multi-paradigm Declarative Languages
LOPSTR '01 Selected papers from the 11th International Workshop on Logic Based Program Synthesis and Transformation
TOY: A Multiparadigm Declarative System
RtA '99 Proceedings of the 10th International Conference on Rewriting Techniques and Applications
Higher-order narrowing with definitional trees
Journal of Functional Programming
Operational semantics for declarative multi-paradigm languages
Journal of Symbolic Computation
Self-tuning resource aware specialisation for prolog
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
A Framework for Interpreting Traces of Functional Logic Computations
Electronic Notes in Theoretical Computer Science (ENTCS)
Communications of the ACM
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
Overlapping rules and logic variables in functional logic programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Combining static analysis and profiling for estimating execution times
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.02 |
In this work, we introduce a profiling scheme for modern functional logic languages covering notions like laziness, sharing, and non-determinism. Firstly, we instrument a natural (big-step) semantics in order to associate a symbolic cost to each basic operation (e.g., variable updates, function unfoldings, case evaluations). While this cost semantics provides a formal basis to analyze the cost of a computation, the implementation of a cost-augmented interpreter based on it would introduce a huge overhead. Therefore, we also introduce a sound transformation that instruments a program such that its execution—under the standard semantics—yields not only the corresponding results but also the associated costs. Finally, we describe a prototype implementation of a profiler based on the developments in this paper.