shithub: pprolog

RSS feed

13efe911 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/27 12:41
remove clausenr from terms, and put it into goals instead. Next up is implementing the control constructs in C, since they misbehave right now due to the new changes

4fba3e66 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/27 11:20
Don't use strings to identify vars, use numbers

0a706b5b – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/24 10:44
Reduce size of the Term struct from about 72 bytes to 48

ef55dad2 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 20:53
Remove debug print from before

c85de58a – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 20:50
Simplify parsing a bit, and make sure the prolog loader calls read_term with the correct module to pick up the correct operators

43f65cbe – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 18:36
Garbage collect as the first thing in the repl loop.

2bf351a2 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 18:29
Silence warning about singleton variables in system.pl and loader.pl

9cc17961 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 18:24
Fix ; again haha, I can't just wrap variable goals in call/1 due to cuts being local in a call

48da622d – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 17:54
Big commit changing the way the system is loaded at startup.

0f347162 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 15:35
Implement halt/0, halt/1, and understand the --no-repl flag

77c7fea4 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 15:18
Use addgoals to add the goal in catch/3 to the goalstack, allowing mod:pred goals too

2bda2a9d – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 14:52
Understand set_prolog_flag directive

d7a4ae65 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 14:48
Understand initialization/1 directives

5fe8b986 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 14:24
Make predicates private and static by default, and make them dynamic when using the dynamic/1 predicate

fd10cf69 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 13:36
Fix singleton warnings in repl.pl

463f3b41 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 13:35
Warn about singleton variables in clauses, as it is often a sign of a mis-spelling

0cf3816c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 12:58
Actually load repl.pl with the prolog loader, and handle module directives

b1f62daf – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/22 12:37
Use the prolog loader to load the repl.

88841b19 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 20:12
Always use a fresh clausenr for read teams, and make sure to update the clausenr in call/1, so cuts are local to that call

085e3595 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 19:33
The iso standard want's call(G) to throw a type_error(callable, G), when G contains parts that cannot be called, but it is

0478e693 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 19:17
Throw errors when trying to evaluate goals that cannot be evaluated

901224d3 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 18:38
Add support for character code constants like 0'a

0c22d3d7 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 18:28
Add a bit of a hack to the parser so it can parse (a) op arg when a is an operator

42be2751 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 18:07
Support '' in tokens

24cdc7ad – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 17:58
Add a new work in progress loader to load all user defined modules

90664173 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 14:11
Add a space between printout and ; or .

e6ce8b1d – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/20 14:05
Add op/3 and current_op/3

1c840d5c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/19 10:40
Update TODO

6c539b4d – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/19 10:26
Try to print A = B instead of A = _X, B = _X when two variables are equal

6b3d59a3 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/19 09:12
Print errors better in the repl

1b73b6d1 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/19 08:44
More work on streams

daadb2b1 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/18 14:22
Load extra arguments as module files

18ae80ea – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/18 09:08
Install stdlib.pl and repl.pl into /sys/lib/prolog/

8a1e32e6 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/16 16:30
Handle -d option in prolog

c8867502 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/16 16:22
Handle the 'unknown' prolog flag correctly

3f316c5c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/16 16:09
Implement a bit more of prolog flag predicates set_prolog_flag/2 and current_prolog_flag/2

8ef27e2f – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/16 11:36
Pass arguments to repl/1

480de114 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/16 11:25
Replace the C repl with one written in prolog :)

ee65a81e – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/16 10:19
Add character input/output

1c878919 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/15 20:42
Make operators local to each module, and implement some more correct prettyprint code, used by write_term

2a77288e – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/15 18:04
Make read_term understand the three read options:

d4fc86d5 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/13 15:58
Add atom_concat/3

9fd0e7fc – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/13 15:57
Add atom_codes/2

6d3d4a2d – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/13 14:51
Add atom_length/2

9d5c9d3f – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/13 14:36
Implement sort/2 and setof/3

9b4f1752 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/13 14:35
When binding two variables to eachother, always bind to the one with the lowest clause number

a40a18fc – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/11 14:53
Using member and then cut always picks the first element anyways, so just pick it with = instead

81fa4d4a – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/11 14:50
Try to implement bagof/3, but I am not 100% sure it is correct

48c0638c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/10 06:45
Add findall/3 implemented in prolog

a37ae2f0 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/09 16:09
Add asserta/1, assertz/1, retract/1, abolish/1 (and retract_one/1, which is retract/1 but doesn't backtrack)

d2a08281 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/08 17:54
Add current_predicate/1 builtin

e9f5f2ff – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/08 17:22
Make the repl bindings and query global so the garbage collector can know about them

6dd50f97 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/08 16:29
Add a hash table to make the garbage collection faster

28e7dd47 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/08 13:07
Add a mark-sweep garbage collector

96639193 – Peter Mikkelsen <petermikkelsen10@gmail.com> authored on 2021/07/08 13:53
Add license

58e0109e – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 21:40
Add clause/2 predicate

2dce50fb – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 20:49
Add arithmetic comparison predicates

3844776a – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 20:49
Update todo

7441a094 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 20:16
Implement the full arithmetic part of the ISO spec.

e6a38aa9 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 12:44
Add copy_term/2

0f958749 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 12:32
Make '=..'/2 work according to spec. Introduce types.c for functions which tells us something about term types. Should be used a lot more instead of explicitly looking into terms->tag everywhere

73b9bad8 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 11:56
Oops remove debug print

68c6243c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 11:54
Make arg/3 work according to spec

3e1e9621 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 11:42
Make functor/3 work according to spec

91f737e4 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 11:11
Fix compare/3 for variables named _. They are never equal

660d7d81 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/07 11:01
Add missing pre defined operators from iso prolog

95f874fe – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/06 17:54
Add list module

03738c67 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/06 17:23
Store the calling module in each goal, and fix a bug where unification could leave behind some bindings even though the unification failed.

a0eb2bb2 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/06 14:00
Change the output of the repl a lille bit

0c45e33c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/06 13:45
Group clauses into predicates, and create all valid choicepoints at once. This is wastefull if one branch loops forever, but it is much nicer otherwise, since we know the choicepoints only gets created as long as their head is unifiable with the goal.

bdcc02a5 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/05 12:59
Turn integers and floats into seperate term types

44ab8a33 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/05 12:27
First step on modules. Still very very rough.

3f26a0f2 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/03 17:16
Make the goalstack global just like the choicestack

66a7040d – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/03 16:59
Add one global choicestack so we don't need to pass it around

7db38904 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/03 14:58
Start adding support for read_term and write_term

d8144752 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/02 18:01
Start work on input/output streams

8dd4f85c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/02 13:55
Fix Throw(What) macro

be26a1ce – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/02 13:50
Begin work on set_prolog_flag/2 and current_prolog_flag/2

2bfb79be – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/02 12:59
Remove strings, and add a (currently not changable) flag 'double_quotes' which defines how double quoted strings are stored.

855fd0a5 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/01 16:39
Add standard error predicates

e5ab41fa – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/07/01 15:55
Add exceptions :) implement catch/3 and throw/1

329c6975 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 20:52
Start implementation of is/2

2c166a14 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 20:25
Remove = from examples now that it is in stdlib

1ca36700 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 19:53
Add length/2 and member/2

d5ac4148 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 19:48
Prettyprint lists for reals

85adea62 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 19:30
Allow the repl to backtrack to give alternative results

fa83d3f1 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 18:43
Add =../2

a106f8db – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 17:38
Add arg/3

afbd5688 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 17:17
Add functor/3

ff418c79 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 16:51
Add comparison predicates

a8b1fadd – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 15:33
Add builtins for typetests

baea4aa9 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 13:48
Add a standard library with the "builtins" that doesn't really need to be actual builtins

50f83a91 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 13:03
Add support for builtins, and implement true/0, fail/0, call/1, and !/0 builtins

347e5bc5 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 10:15
Give queries another id than clauses, so variable names doesn't clash

8fde6e48 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 10:04
Commit repl.c file

ee4298a2 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/30 10:04
Add a basic repl

79d1fe1c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/29 22:05
Add todo

67e8b85a – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/29 22:01
Treat the variable _ differently, in that it doesn't introduce a new binding

2c3e688c – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/29 21:58
Add backtracking to the evaluator. This means we have to keep track of choicepoints which is implemented the easy but wasteful way for now.

d5ce41f0 – Peter Mikkelsen <peter@pmikkelsen.com> authored on 2021/06/29 20:07
Start work on an evaluator. For now it knows how to unify but doesn't know how to handle builtin predicates or how to backtrack

Next