Here are a few articles about CLAIRE:
Four scientific articles that explain some of the specific and distinctive features of CLAIRE (20 years old or more, when Yves Caseau was a research scientist).
Three web sources of information
Published online by Cambridge University Press: 13 November 2002
YVES CASEAU, FRANÇOIS-XAVIER JOSSET and FRANÇOIS LABURTHE
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).
ECOOP 93
This paper proposes an extension of the notion of method as it is currently used in most object-oriented languages. We define polymethods as methods that we can attach directly to types, as opposed to classes and that we can describe with a second-order type. Two benefits result from this extension; first, the expressive power of the language is improved with better modeling abilities. Next, second-order types yield a more powerful (precise) type inference, which extends the range of static type checking in a truly extensible object-oriented language. We first show that extensible object-oriented languages present many difficulties for static type-checking and that second-order types are necessary to get stronger type-checking. We illustrate how to combine polymethods through type inheritance and propose a technique based on abstract interpretation to derive a second-order type for new polymethods.
CLAIRE: Combining Objects and Rules for Problem Solving
Yves Caseau - Bouygues - Direction Scientifique - 1 avenue Eugène Freyssinet
François Laburthe - Ecole Normale Supérieure L.I.E.N.S. - D.M.I.
Abstract
This paper describes a new approach towards code reuse through a high-level programming language. This work has been developed in the context of combinatorial optimization for industrial problems, where performance is critical and where a large number of fairly complex algorithms are used, that often share similar structures (such as branch & bound). The result is the CLAIRE programming language, which provides high levels of abstraction and parametrization. Consequently, it may be used as an executable pseudo-code to describe concise and reusable problem solving algorithms.
Generating specialized C++ Code from parametrized CLAIRE pseudo-code
Yves Caseau, François Laburthe LIENS, École Normale Supérieure 45 rue d’Ulm, 75005 Paris, France
Medium article from Website Developer