Skip to content

Commit aa4ff8b

Browse files
authored
Merge pull request #24098 from gares/release-elpi-v1.17.0
[new release] elpi (1.17.0)
2 parents 4c2ac6c + 00a1795 commit aa4ff8b

File tree

1 file changed

+96
-0
lines changed
  • packages/elpi/elpi.1.17.0

1 file changed

+96
-0
lines changed

packages/elpi/elpi.1.17.0/opam

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
opam-version: "2.0"
2+
maintainer: "Enrico Tassi <enrico.tassi@inria.fr>"
3+
authors: [ "Claudio Sacerdoti Coen" "Enrico Tassi" ]
4+
license: "LGPL-2.1-or-later"
5+
homepage: "https://github.com/LPCIC/elpi"
6+
doc: "https://LPCIC.github.io/elpi/"
7+
dev-repo: "git+https://github.com/LPCIC/elpi.git"
8+
bug-reports: "https://github.com/LPCIC/elpi/issues"
9+
10+
build: [
11+
["dune" "subst"] {dev}
12+
[make "config" "LEGACY_PARSER=1"] {elpi-option-legacy-parser:installed}
13+
["dune" "build" "-p" name "-j" jobs]
14+
[make "tests" "DUNE_OPTS=-p %{name}%" "SKIP=performance_HO" "SKIP+=performance_FO" "SKIP+=elpi_api_performance"] {with-test & os != "macos" & os-distribution != "alpine" & os-distribution != "freebsd"}
15+
]
16+
17+
depends: [
18+
"ocaml" {>= "4.08.0" }
19+
"stdlib-shims"
20+
"ppxlib" {>= "0.12.0" }
21+
"menhir" {>= "20211230" }
22+
"re" {>= "1.7.2"}
23+
"ppx_deriving" {>= "4.3"}
24+
"ANSITerminal" {with-test}
25+
"cmdliner" {with-test}
26+
"dune" {>= "2.8.0"}
27+
"conf-time" {with-test}
28+
"atdgen" {>= "2.10.0"}
29+
"atdts" {>= "2.10.0"}
30+
"odoc" {with-doc}
31+
]
32+
depopts: [
33+
"elpi-option-legacy-parser"
34+
]
35+
conflicts: [
36+
"elpi-option-legacy-parser" {!= "1"}
37+
]
38+
synopsis: "ELPI - Embeddable λProlog Interpreter"
39+
description: """
40+
ELPI implements a variant of λProlog enriched with Constraint Handling Rules,
41+
a programming language well suited to manipulate syntax trees with binders.
42+
43+
ELPI is designed to be embedded into larger applications written in OCaml as
44+
an extension language. It comes with an API to drive the interpreter and
45+
with an FFI for defining built-in predicates and data types, as well as
46+
quotations and similar goodies that are handy to adapt the language to the host
47+
application.
48+
49+
This package provides both a command line interpreter (elpi) and a library to
50+
be linked in other applications (eg by passing -package elpi to ocamlfind).
51+
52+
The ELPI programming language has the following features:
53+
54+
- Native support for variable binding and substitution, via an Higher Order
55+
Abstract Syntax (HOAS) embedding of the object language. The programmer
56+
does not need to care about technical devices to handle bound variables,
57+
like De Bruijn indices.
58+
59+
- Native support for hypothetical context. When moving under a binder one can
60+
attach to the bound variable extra information that is collected when the
61+
variable gets out of scope. For example when writing a type-checker the
62+
programmer needs not to care about managing the typing context.
63+
64+
- Native support for higher order unification variables, again via HOAS.
65+
Unification variables of the meta-language (λProlog) can be reused to
66+
represent the unification variables of the object language. The programmer
67+
does not need to care about the unification-variable assignment map and
68+
cannot assign to a unification variable a term containing variables out of
69+
scope, or build a circular assignment.
70+
71+
- Native support for syntactic constraints and their meta-level handling rules.
72+
The generative semantics of Prolog can be disabled by turning a goal into a
73+
syntactic constraint (suspended goal). A syntactic constraint is resumed as
74+
soon as relevant variables gets assigned. Syntactic constraints can be
75+
manipulated by constraint handling rules (CHR).
76+
77+
- Native support for backtracking. To ease implementation of search.
78+
79+
- The constraint store is extensible. The host application can declare
80+
non-syntactic constraints and use custom constraint solvers to check their
81+
consistency.
82+
83+
- Clauses are graftable. The user is free to extend an existing program by
84+
inserting/removing clauses, both at runtime (using implication) and at
85+
"compilation" time by accumulating files.
86+
87+
ELPI is free software released under the terms of LGPL 2.1 or above."""
88+
url {
89+
src:
90+
"https://github.com/LPCIC/elpi/releases/download/v1.17.0/elpi-1.17.0.tbz"
91+
checksum: [
92+
"sha256=27c14905e681fb61ed1e3ae480dcce6499e067601c614fa7a4bf58d4734f9f3a"
93+
"sha512=bb71271547354b97942b8f8e22121740a8b5eae5d44e5429ffa4c4a23edbed4f9778ac57ccc18065704b533c13b835607a32239e3c19f711af2ac9f8a3151c08"
94+
]
95+
}
96+
x-commit-hash: "be7c890a81e03acc47b2e75d0295cc63345b2e5a"

0 commit comments

Comments
 (0)