The C programming language
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
CONS should not CONS its arguments, part II: Cheney on the M.T.A.
ACM SIGPLAN Notices
Embedded object-oriented production systems (OOPS): workshop report
OOPSLA '94 Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum)
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Java Virtual Machine Specification
Java Virtual Machine Specification
Metastructures versus Attributed Variables in the Context of Extensible Unification
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Adaptive Constraint Handling with CHR in Java
CP '01 Proceedings of the 7th International Conference on Principles and Practice of Constraint Programming
CHRv: A Flexible Query Language
FQAS '98 Proceedings of the Third International Conference on Flexible Query Answering Systems
JEOPS - The Java Embedded Object Production System
IBERAMIA-SBIA '00 Proceedings of the International Joint Conference, 7th Ibero-American Conference on AI: Advances in Artificial Intelligence
Compiling Constraint Handling Rules into Prolog with Attributed Variables
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Extending arbitrary solvers with constraint handling rules
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
A tail-recursive machine with stack inspection
ACM Transactions on Programming Languages and Systems (TOPLAS)
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Abstract interpretation for constraint handling rules
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
Introduction to the Special Issue on Constraint Handling Rules
Theory and Practice of Logic Programming
Intelligent search strategies based on adaptive Constraint Handling Rules
Theory and Practice of Logic Programming
Optimizing compilation of constraint handling rules in HAL
Theory and Practice of Logic Programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Handbook of Constraint Programming (Foundations of Artificial Intelligence)
Handbook of Constraint Programming (Foundations of Artificial Intelligence)
A concurrent constraint handling rules implementation in Haskell with software transactional memory
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Efficient constraint propagation engines
ACM Transactions on Programming Languages and Systems (TOPLAS)
Guard Reasoning in the Refined Operational Semantics of CHR
Constraint Handling Rules
Constraint Handling Rules
Automatic Implication Checking for CHR Constraints
Electronic Notes in Theoretical Computer Science (ENTCS)
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Hi-index | 0.00 |
In this paper, we address the different conceptual and technical difficulties encountered when embedding CHR into an imperative host language. We argue that a tight, natural integration leads to a powerful programming language extension, intuitive to both CHR and imperative programmers. We show how to compile CHR to highly optimized imperative code. To this end, we first review the well-established CHR compilation scheme, and survey the large body of possible optimizations. We then show that this scheme, when used for compilation to imperative target languages, leads to stack overflows. We therefore introduce new optimizations that considerably improve the performance of recursive CHR programs. Rules written using tail calls are even guaranteed to run in constant space. We implemented systems for both Java and C, following the language design principles and compilation scheme presented in this paper, and show that our implementations outperform other state-of-the-art CHR compilers by several orders of magnitude.