package prolect
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=390fa82ebd26bd25809572bbe44ee6ace7ee845f285a7b6b55ce668be3bde2b2
doc/README.html
Prolect
An OCaml Derivation of the Warren Abstract Machine.
Language support is limited to pure Prolog i.e. predicate logic with Horn clauses.
This is a very simple & plain Prolog interpreter with no support for negation as failure, integers, lists, operators or built-in predicates.
Implementaion-wise, there is no tabling or memoization nor any type of term indexing. The core part of the interpreter is only ~100 LOC.
Usage
Install using the opam package manager:
opam install prolectThen run it, potentially with a consulting file:
prolect test.plLinux
If you don't want to use opam, download the .exe from GitHub releases, add the executable attribute (chmod +x prolect.exe), and then:
./prolect.exeOther OSes
If you don't want to use opam, download the .bc from GitHub releases, install the OCaml Runtime, and then:
ocamlrun prolect.bcCompile it yourself
If you don't want to use the bytecode interpreter either, you can compile the project yourself (e.g. for getting a performance boost on other OSes).
First, install the dependencies (ocaml, dune, etc.). Then:
dune exec prolect --profile releaseThe exe
To get the executable:
dune build . --profile releaseRun the REPL:
_build/default/bin/prolect.exeExample
Provided that you've given the test consulting file (i.e. running prolect test.pl instead of prolect):
Welcome to Prolect (version 1.1.3)
?- ancestor(terah, jacob).
true .
?- ancestor(terah, X).
X = sarah ;
X = abraham ;
X = isaac ;
X = jacob ;
X = isaac ;
X = ismael ;
X = jacob .
?- loves(sarah, X).
X = isaac ;
X = loves(sarah, isaac) ;
X = loves(sarah, loves(sarah, isaac)) .
?- ^CFuture plans
- Improve error handling
- Add files importing facilities
- Add term indexing