diff options
Diffstat (limited to 'sites/prolog.pmikkelsen.com/index.md')
-rw-r--r-- | sites/prolog.pmikkelsen.com/index.md | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/sites/prolog.pmikkelsen.com/index.md b/sites/prolog.pmikkelsen.com/index.md new file mode 100644 index 0000000..4d0efc5 --- /dev/null +++ b/sites/prolog.pmikkelsen.com/index.md @@ -0,0 +1,72 @@ +# 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](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 |