blob: c31ee582b03da650c0c986b6feb3e5ec18eb8697 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# 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. The long term goal
is to be compliant with the ISO standard but currently it is all just
experimentation.
# Features
* A base system based on the WAM (Warren abstract machine) implemented by following the book [here](http://wambook.sourceforge.net/wambook.pdf).
* Support for extended precision arithmetic via [mp(2)](http://man.9front.org/2/mp).
* 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](https://git.sr.ht/~pmikkelsen/pprolog/tree/master/item/stdlib.pl).
# Screenshot
[![A picture of pprolog in action][1]][1]
[1]: /_images/screenshot.png
|