Introduction
This is the website for PProlog, a new prolog implementation written in C on and for plan 9 (9front specifically). Work started in december 2020 due to the author's need for a prolog system on 9front. It is pure experimentation and the code might be bad in more than a few places.
NOTE: There is no development currently, and it is in a kinda broken state after a failed attempt of adding modules.
Features
- A base system based on the WAM (Warren abstract machine) implemented by following the book here.
- Support for extended precision arithmetic via mp(2).
- Basic support for definite clause grammars (DCGs). For now DCG's are translated by the parser into difference lists and they do not support everything one expects.
- Lists.
- Strings represented as list of char atoms.
-
The basic control predicates such as
,/2
,;/2
,->/2
and cut. - Full unicode support.
Status
At this moment the system works OK but it has very few builtin predicates and much of what people expect from a working prolog system is still missing.
The list of builtins as of January 13, 2021 is:
-
is/2
-
halt/0
-
consult/1
-
write/1
-
read/1
-
call/n
-
fail/0
-
>/2
-
==/2
-
atom/1
-
integer/1
-
float/1
-
var/1
-
compound/1
-
term_variables/2
And the following predicates are implemented in the standard library:
-
=/2
-
\=/2
-
reverse/2
-
samelength/2
-
append/3
-
member/2
-
select/3
-
length/2
-
nl/0
-
phrase/2
-
\+/2
-
false/0
-
true/0
-
repeat/0
-
once/1
-
,/2
-
;/2
-
->/2
-
=\=/2
and many more all listed here.