This commit is contained in:
Mark Thom
2019-04-01 22:05:45 -06:00

View File

@@ -20,41 +20,41 @@ argument indexing, last call optimization and conjunctive queries.
Extend Scryer Prolog to include the following, among other features: Extend Scryer Prolog to include the following, among other features:
* call/N as a built-in meta-predicate (_done_). - [x] call/N as a built-in meta-predicate.
* ISO Prolog compliant throw/catch (_done_). - [x] ISO Prolog compliant throw/catch.
* Built-in and user-defined operators of all fixities, with custom - [x] Built-in and user-defined operators of all fixities, with custom
associativity and precedence (_done_). associativity and precedence.
* Bignum, rational number and floating point arithmetic (_done_). - [x] Bignum, rational number and floating point arithmetic.
* Built-in control operators (`,`, `;`, `->`, etc.) (_done_). - [x] Built-in control operators (`,`, `;`, `->`, etc.).
* A revised, not-terrible module system (_done, I think_). - [x] A revised, not-terrible module system.
* Built-in predicates for list processing and top-level declarative - [x] Built-in predicates for list processing and top-level declarative
control (`setup_call_cleanup/3`, `call_with_inference_limit/3`, control (`setup_call_cleanup/3`, `call_with_inference_limit/3`,
etc.) (_done_) etc.)
* Default representation of strings as list of chars, using a packed - [x] Default representation of strings as list of chars, using a packed
internal representation (_done_). internal representation.
- A representation of 'partial strings' as difference lists - A representation of 'partial strings' as difference lists
of characters (_done_). of characters.
* `term_expansion/2` and `goal_expansion/2` (_done_). - [x] `term_expansion/2` and `goal_expansion/2`.
* Definite Clause Grammars (_done_). - [x] Definite Clause Grammars.
* Attributed variables using the SICStus Prolog interface and - [x] Attributed variables using the SICStus Prolog interface and
semantics. Adding coroutines like `dif/2`, `freeze/2`, etc. semantics. Adding coroutines like `dif/2`, `freeze/2`, etc.
is straightforward with attributed variables (_done_). is straightforward with attributed variables.
- [x] Support for `verify_attributes/3` - [x] Support for `verify_attributes/3`
- [x] Support for `attribute_goals/2` and `project_attributes/2` - [x] Support for `attribute_goals/2` and `project_attributes/2`
- [x] `call_residue_vars/2` - [x] `call_residue_vars/2`
* `if_` and related predicates, following the developments of the - [x] `if_` and related predicates, following the developments of the
paper "Indexing `dif/2`" (_done_). paper "Indexing `dif/2`".
* All-solutions predicates (`findall/{3,4}`, `bagof/3`, `setof/3`) (_done_). - [x] All-solutions predicates (`findall/{3,4}`, `bagof/3`, `setof/3`).
* Clause creation and destruction (`asserta/1`, `assertz/1`, - [x] Clause creation and destruction (`asserta/1`, `assertz/1`,
`retract/1`, `abolish/1`) with logical update semantics (_done_). `retract/1`, `abolish/1`) with logical update semantics.
* Backtrackable and non-backtrackable global variables via `bb_get/2` - [x] Backtrackable and non-backtrackable global variables via `bb_get/2`
`bb_put/2` (non-backtrackable) and `bb_b_put/2` `bb_put/2` (non-backtrackable) and `bb_b_put/2`
(backtrackable). (_done_). (backtrackable).
* Streams and predicates for stream control (_in progress_). - [ ] Streams and predicates for stream control (_in progress_).
* An incremental compacting garbage collector satisfying the five - [ ] An incremental compacting garbage collector satisfying the five
properties of "Precise Garbage Collection in Prolog." properties of "Precise Garbage Collection in Prolog."
* Mode declarations. - [ ] Mode declarations.
* Extensions for clp(FD). - [ ] Extensions for clp(FD).
## Phase 3 ## Phase 3