Hostname: page-component-848d4c4894-cjp7w Total loading time: 0 Render date: 2024-07-04T03:14:01.389Z Has data issue: false hasContentIssue false

CLAIRE: combining sets, search and rules to better express algorithms

Published online by Cambridge University Press:  13 November 2002

YVES CASEAU
Affiliation:
Bouygues SA – e-lab, 1 avenue Eugène Freyssinet, 78061 St-Quentin en Yvelines cedex, France (e-mail: ycs@challenger.bouygues.fr, fxjosset@challenger.bouygues.fr, flaburth@challenger.bouygues.fr)
FRANÇOIS-XAVIER JOSSET
Affiliation:
Bouygues SA – e-lab, 1 avenue Eugène Freyssinet, 78061 St-Quentin en Yvelines cedex, France (e-mail: ycs@challenger.bouygues.fr, fxjosset@challenger.bouygues.fr, flaburth@challenger.bouygues.fr)
FRANÇOIS LABURTHE
Affiliation:
Bouygues SA – e-lab, 1 avenue Eugène Freyssinet, 78061 St-Quentin en Yvelines cedex, France (e-mail: ycs@challenger.bouygues.fr, fxjosset@challenger.bouygues.fr, flaburth@challenger.bouygues.fr)

Abstract

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).

Type
Research Article
Copyright
© 2002 Cambridge University Press

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)