From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTP id 27EDA5D5 for ; Fri, 27 Apr 2018 15:31:25 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.49,335,1520895600"; d="scan'208";a="324825588" Received: from sympa.inria.fr ([193.51.193.213]) by mail2-relais-roc.national.inria.fr with ESMTP; 27 Apr 2018 17:31:22 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id C000E82450; Fri, 27 Apr 2018 17:31:22 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id D683182416 for ; Fri, 27 Apr 2018 17:31:16 +0200 (CEST) X-IronPort-AV: E=Sophos;i="5.49,335,1520895600"; d="scan'208";a="263580464" Received: from zcs-store2.inria.fr ([128.93.142.29]) by mail3-relais-sop.national.inria.fr with ESMTP; 27 Apr 2018 17:31:16 +0200 Date: Fri, 27 Apr 2018 17:31:16 +0200 (CEST) From: Enrico Tassi To: caml-list Message-ID: <1007026062.32717675.1524843076115.JavaMail.zimbra@inria.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [138.96.200.56] X-Mailer: Zimbra 8.7.11_GA_1854 (ZimbraWebClient - FF59 (Linux)/8.7.11_GA_1854) Thread-Index: u5xEXd4SPSidaVLl+pJ/KfbQnffupA== Thread-Topic: ELPI 1.0 released Subject: [Caml-list] [ANN] ELPI 1.0 released Reply-To: Enrico Tassi X-Loop: caml-list@inria.fr X-Sequence: 16863 Errors-to: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: We are proud to announce the immediate availability of ELPI 1.0. ELPI stands for Embeddable =CE=BBProlog Interpreter, and is implemented in = OCaml. ELPI implements a variant of =CE=BBProlog 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 n= eeds not to care about De Bruijn indexes. - Native support for hypothetical context. When moving under a binder one c= an 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 (=CE=BBProlog) 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 ru= les. 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 --=20 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=