summaryrefslogtreecommitdiff
path: root/eval.c
AgeCommit message (Collapse)Author
2021-07-20Throw errors when trying to evaluate goals that cannot be evaluatedPeter Mikkelsen
2021-07-16Handle -d option in prologPeter Mikkelsen
2021-07-16Handle the 'unknown' prolog flag correctlyPeter Mikkelsen
2021-07-16Replace the C repl with one written in prolog :)Peter Mikkelsen
2021-07-16Make operators local to each module, and implement some more correct ↵Peter Mikkelsen
prettyprint code, used by write_term
2021-07-13When binding two variables to eachother, always bind to the one with the ↵Peter Mikkelsen
lowest clause number
2021-07-08Add a mark-sweep garbage collectorPeter Mikkelsen
2021-07-08Add clause/2 predicatePeter Mikkelsen
2021-07-07Add copy_term/2Peter Mikkelsen
2021-07-06Store the calling module in each goal, and fix a bug where unification could ↵Peter Mikkelsen
leave behind some bindings even though the unification failed.
2021-07-06Group clauses into predicates, and create all valid choicepoints at once. ↵Peter Mikkelsen
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.
2021-07-05Turn integers and floats into seperate term typesPeter Mikkelsen
2021-07-05First step on modules. Still very very rough.Peter Mikkelsen
2021-07-03Make the goalstack global just like the choicestackPeter Mikkelsen
2021-07-03Add one global choicestack so we don't need to pass it aroundPeter Mikkelsen
2021-07-03Start adding support for read_term and write_termPeter Mikkelsen
2021-07-02Remove strings, and add a (currently not changable) flag 'double_quotes' ↵Peter Mikkelsen
which defines how double quoted strings are stored.
2021-07-01Add exceptions :) implement catch/3 and throw/1Peter Mikkelsen
2021-06-30Allow the repl to backtrack to give alternative resultsPeter Mikkelsen
2021-06-30Add functor/3Peter Mikkelsen
2021-06-30Add comparison predicatesPeter Mikkelsen
2021-06-30Add a standard library with the "builtins" that doesn't really need to be ↵Peter Mikkelsen
actual builtins
2021-06-30Add support for builtins, and implement true/0, fail/0, call/1, and !/0 builtinsPeter Mikkelsen
2021-06-30Give queries another id than clauses, so variable names doesn't clashPeter Mikkelsen
2021-06-30Add a basic replPeter Mikkelsen
2021-06-30Treat the variable _ differently, in that it doesn't introduce a new bindingPeter Mikkelsen
2021-06-30Add backtracking to the evaluator. This means we have to keep track of ↵Peter Mikkelsen
choicepoints which is implemented the easy but wasteful way for now. I have also added a number which is used to differentiate variables from different application of the clauses.
2021-06-30Start work on an evaluator. For now it knows how to unify but doesn't know ↵Peter Mikkelsen
how to handle builtin predicates or how to backtrack