From 78afe041e51e54a72c34ee4b25dc3a8af0cc776a Mon Sep 17 00:00:00 2001 From: glenda Date: Wed, 13 Jan 2021 09:27:40 +0000 Subject: Move prolog page to pprolog.org --- sites/pprolog.org/index.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 sites/pprolog.org/index.md (limited to 'sites/pprolog.org/index.md') diff --git a/sites/pprolog.org/index.md b/sites/pprolog.org/index.md new file mode 100644 index 0000000..4cd72ca --- /dev/null +++ b/sites/pprolog.org/index.md @@ -0,0 +1,64 @@ +# 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). -- cgit v1.2.3