caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] [ANN] ELPI 1.0 released
@ 2018-04-27 15:31 Enrico Tassi
  0 siblings, 0 replies; only message in thread
From: Enrico Tassi @ 2018-04-27 15:31 UTC (permalink / raw)
  To: caml-list

We are proud to announce the immediate availability of ELPI 1.0.

ELPI stands for Embeddable λProlog Interpreter, and is implemented in OCaml.

ELPI implements a variant of λProlog enriched with Constraint Handling Rules,
a programming language well suited to manipulate syntax trees with binders.

ELPI is designed to be embedded into larger applications written in OCaml as
an extension language. It comes with an API to drive the interpreter and
with an FFI for defining built-in predicates and data types, as well as
quotations and similar goodies that come in handy to adapt the language to the
host
application.

The ELPI programming language has the following features:

- Native support for variable binding and substitution, via an Higher Order
  Abstract Syntax (HOAS) embedding of the object language. The programmer needs
  not to care about De Bruijn indexes.

- Native support for hypothetical context. When moving under a binder one can
  attach to the bound variable extra information that is collected when the
  variable gets out of scope. For example when writing a type-checker the
  programmer needs not to care about managing the typing context.

- Native support for higher order unification variables, again via HOAS.
  Unification variables of the meta-language (λProlog) can be reused to
  represent the unification variables of the object language. The programmer
  does not need to care about the unification-variable assignment map and
  cannot assign to a unification variable a term containing variables out of
  scope, or build a circular assignment.

- Native support for syntactic constraints and their meta-level handling rules.
  The generative semantics of Prolog can be disabled by turning a goal into a
  syntactic constraint (suspended goal). A syntactic constraint is resumed as
  soon as relevant variables gets assigned. Syntactic constraints can be
  manipulated by constraint handling rules (CHR).

- Native support for backtracking. To ease implementation of search.

- The constraint store is extensible.  The host application can declare
  non-syntactic constraints and use custom constraint solvers to check their
  consistency.

- Clauses are graftable. The user is free to extend an existing program by
  inserting/removing clauses, both at runtime (using implication) and at
  "compilation" time by accumulating files.

ELPI is free software released under the terms of LGPL 2.1 or above.

See https://github.com/LPCIC/elpi for installation instructions.

Best regards,
--
Enrico Tassi

-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-04-27 15:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-27 15:31 [Caml-list] [ANN] ELPI 1.0 released Enrico Tassi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).