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,->/2and 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.
