From 404a7d3b516e69a7a2f33694b6be53ef53097667 Mon Sep 17 00:00:00 2001 From: glenda Date: Wed, 13 Jan 2021 02:53:44 +0000 Subject: Updates --- sites/prolog.pmikkelsen.com/index.md | 63 ++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/sites/prolog.pmikkelsen.com/index.md b/sites/prolog.pmikkelsen.com/index.md index 9746a85..4f21c8d 100644 --- a/sites/prolog.pmikkelsen.com/index.md +++ b/sites/prolog.pmikkelsen.com/index.md @@ -1,3 +1,62 @@ -# Prolog woo +# Introduction -Heyo prolog fans \ No newline at end of file +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. + +# Status + +At this moment the system works OK but it has very few builtin predicates +and much of when 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