From 03738c67684b83692d9112858f07c745f355a157 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Tue, 6 Jul 2021 21:23:41 +0000 Subject: Store the calling module in each goal, and fix a bug where unification could leave behind some bindings even though the unification failed. --- dat.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'dat.h') diff --git a/dat.h b/dat.h index 783a785..1bde347 100644 --- a/dat.h +++ b/dat.h @@ -5,7 +5,7 @@ typedef struct Choicepoint Choicepoint; typedef struct Clause Clause; typedef struct Predicate Predicate; typedef struct Module Module; -typedef int (*Builtin)(Term *, Binding **); +typedef int (*Builtin)(Term *, Binding **, Module *); struct Term { @@ -31,6 +31,7 @@ struct Binding struct Goal { Term *goal; + Module *module; /* What module is this goal to be evaluated in? */ Term *catcher; /* When this is non-nil, the goal is a catch frame, goal is the recovery. */ Goal *next; }; -- cgit v1.2.3