Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Programming with sets; an introduction to SETL
Programming with sets; an introduction to SETL
A logical language for data and knowledge bases
A logical language for data and knowledge bases
Constraint satisfaction in logic programming
Constraint satisfaction in logic programming
A logic for object-oriented logic programming
PODS '89 Proceedings of the eighth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
An introduction to LIFE-programming with logic, inheritance, functions, and equations
ILPS '93 Proceedings of the 1993 international symposium on Logic programming
Typechecking and modules for multi-methods
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
A third-generation SELF implementation: reconciling responsiveness with performance
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Encapsulated search for higher-order concurrent constraint programming
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Covariance and contravariance: conflict without a cause
ACM Transactions on Programming Languages and Systems (TOPLAS)
Subtypes vs. where clauses: constraining parametric polymorphism
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Search and imperative programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Developing Java beans
Attaching Second-Order Types to Methods in an Object-Oriented Language
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Local consistency for extended CSPs
Theoretical Computer Science
CoJava: optimization modeling by nondeterministic simulation
CP'06 Proceedings of the 12th international conference on Principles and Practice of Constraint Programming
Hi-index | 0.00 |
This paper presents a programming language which includes paradigms that are usually associated with declarative languages, such as sets, rules and search, into an imperative (functional) language. Although these paradigms are separately well known and are available under various programming environments, the originality of the CLAIRE language comes from the tight integration, which yields interesting run-time performances, and from the richness of this combination, which yields new ways in which to express complex algorithmic patterns with few elegant lines. To achieve the opposite goals of a high abstraction level (conciseness and readability) and run-time performance (CLAIRE is used as a C++ preprocessor), we have developed two kinds of compiler: first, a pattern pre-processor handles iterations over both concrete and abstract sets (data types and program fragments), in a completely user-extensible manner; secondly, an inference compiler transforms a set of logical rules into a set of functions (demons that are used through procedural attachment).