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