# jsprolog
What is it?
It's a simple Prolog interpreter written with TypeScript. I've adapted it from Jan's javascript Prolog interpreter because I needed a convenient automated theorem proving engine in JavaScript.
What it can do
It can solve simple stuff, for instance N-queen problem. It supports tail recursion.
Limitations
- Parser doesn't support operators. Use function call notation:
=(X, Y), is(Z, +(1, X))
. - It has a very limited set of built-in predicates.
- Current implementation is slow. Finding all solutions of N-queen problem takes about 25 seconds on Intel i5-3570.
Preliminary string support
Jsprolog features rudimental support for strings:
- Double quoted text is parsed as a list of character codes.
- Use
\"
to mask double quote (NB: remember to escape\
as well in javascript strings:"looks \\\"pretty\\\""
) - No built-in predicates to work with strings.
- Will be replaced with string type in future.
How to use
npm i jsprolog
Please note that the project is far from stabilization and the API will surely change at some point in the future.
var Prolog = ;var db = PrologParser query = PrologParser iter = PrologSolver;whileiternext console;
Also refer to specs/prologSolverSpec.js for usage examples.
Supported built-in predicates
Predicate | Notes |
---|---|
=/2 | Doesn't support cyclic terms. |
!/0 | |
fail/0 | |
call/1 | |
findall/3 | |
is/2 | Supports only +,-,/,*. Silently fails on error. |