Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 5ee7712a65135f0dd95d1c92938a0193 > files > 264

ocaml-facile-doc-1.1-2mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>

<META http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968">
<META name="GENERATOR" content="hevea 1.07">
<TITLE>
Preface
</TITLE>
</HEAD>
<BODY >
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Up"></A>
<A HREF="manual002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H1>Preface</H1>
FaCiLe is a constraint programming library over integer finite domains
written in OCaml&nbsp;[<A HREF="manual009.html#ocaml"><CITE>7</CITE></A>]. It offers all usual constraints
system facilities to create and handle finite domain variables,
arithmetic expressions and constraints (possibly non-linear), built-in
global constraints and search goals. FaCiLe allows to easily build
user-defined constraints and goals (including recursive ones)
from scratch or by combining simple primitives, making pervasive use
of OCaml higher-order functionals to provide a simple and flexible
user interface. As FaCiLe is an OCaml library and not ``yet another
language'', the user benefits from type inference and strong typing
discipline, high level of abstraction, modules and objects system, as
well as native code compilation efficiency, garbage collection and
replay debugger. All these features of OCaml (among many others) allow
to prototype and experiment quickly: modeling, data processing and
interface are implemented with the same powerful and efficient
language.<BR>
<BR>
This manual is not a document about constraint programming techniques
but only a tool description. Users should be familiar with other
constraint systems to easily apprehend FaCiLe through the reading
of this manual. Beginners can easily find comprehensive information on
the Web (e.g. <A HREF="http://www.cs.unh.edu/ccc/archive/"><TT>http://www.cs.unh.edu/ccc/archive/</TT></A>). This manual
is neither a course about functional programming and users should
refer to the official Caml Web site at <A HREF="http://caml.inria.fr/"><TT>http://caml.inria.fr/</TT></A>
and the OCaml manual&nbsp;[<A HREF="manual009.html#ocaml"><CITE>7</CITE></A>] to obtain introductory (as well as
advanced) material about the host language of FaCiLe. Hurried readers
may also take a look at a short overview appearing in the ALP
Newsletter&nbsp;[<A HREF="manual009.html#facile.alp.01"><CITE>2</CITE></A>]. Thorough ones may find deeper insights
on FaCiLe implementation details unveiled in the second part of one of the
author PhD thesis&nbsp;[<A HREF="manual009.html#barnier.phd"><CITE>1</CITE></A>].<BR>
<BR>
Since OCaml forbids overloading, FaCiLe unusual looking
operators might be a little disconcerting at first sight. Moreover,
there is no implicit casting, so explicit conversions between
variables (or integer) and arithmetic expressions are
compulsory. These features lead to less concise expressions than with
poorly typed languages, however the user precisely knows which
operation is executed by the system and cannot erratically mix values
of different types. Furthermore, ML style higher-order functionals and
powerful type system ease the design and processing of complex data
structures without the need of syntactic sugar (iterators,
mapping and folding are ``native'' in OCaml). So FaCiLe does not
endlessly provide more and more ad hoc functions for each particular
case to exhibit the smallest possible code for toy examples, but
rather aims at featuring simple building blocks and operators to
combine them efficiently.<BR>
<BR>
This manual is structured in two main parts:
<OL type=1><LI>
 The user's manual which starts with basic examples to give a taste
 of FaCiLe, then details the main concepts and eventually discusses
 more advanced subjects like the design of constraints and goals from
 scratch.
 <LI>The reference manual which describes module by module all the
 functionalities of FaCiLe. This part of the documentation is automatically
generated from the source code interface files (<CODE>.mli</CODE>), which may be
directly consulted.
</OL>
Numerous examples are provided all along the user's manual and more
complete ones are available within the standard distribution in
the <CODE>examples</CODE> directory, as well as a generic <CODE>Makefile</CODE> do build
FaCiLe / OCaml softwares.<BR>
<BR>
Eventually, we would like to thank our early known beta-testers,
Mattias Waldau and Pal-Kristian Engstad, whose suggestions helped us
to improve FaCiLe.<BR>
<BR>
Good reading.<BR>
<BR>

<BR>
<BR>
<HR>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Up"></A>
<A HREF="manual002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>