summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2021-07-13 18:35:24 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2021-07-13 18:35:24 +0000
commit9b4f17521bb8a7d96c09d540880679298ce6f08e (patch)
treed5fd69bdc32f5b95a8d31d94effe5ba0ed6e16b5 /eval.c
parenta40a18fc0181b2b0c59a20dcd89bee7b38d63e40 (diff)
When binding two variables to eachother, always bind to the one with the lowest clause number
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index e490eb6..b300d11 100644
--- a/eval.c
+++ b/eval.c
@@ -194,6 +194,11 @@ unify(Term *a, Term *b, Binding **bindings)
left = right;
right = tmp;
}
+ if(left->tag == VariableTerm && right->tag == VariableTerm && right->clausenr > left->clausenr){
+ Term *tmp = left;
+ left = right;
+ right = tmp;
+ }
if(runestrcmp(left->text, L"_") == 0)
continue; /* _ doesn't introduce a new binding */