From 67e8b85a9f9b42acc896b44eb2ea1310e749f03a Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Wed, 30 Jun 2021 02:01:46 +0000 Subject: Treat the variable _ differently, in that it doesn't introduce a new binding --- eval.c | 4 ++++ example.pl | 2 ++ 2 files changed, 6 insertions(+) diff --git a/eval.c b/eval.c index 854d69c..c755cf5 100644 --- a/eval.c +++ b/eval.c @@ -169,6 +169,10 @@ unify(Term *a, Term *b, Binding **bindings) left = right; right = tmp; } + + if(runestrcmp(left->text, L"_") == 0) + continue; /* _ doesn't introduce a new binding */ + Binding *b = malloc(sizeof(Binding)); b->name = left->text; b->nr = left->clausenr; diff --git a/example.pl b/example.pl index 64f08ab..74387b1 100644 --- a/example.pl +++ b/example.pl @@ -32,3 +32,5 @@ length([Head|Tail], suc(Length)) :- :- initialization(could_be_friends(bob, sam)). :- initialization(length([a,b,c,d], Len)). + +:- initialization(length(_,_)). \ No newline at end of file -- cgit v1.2.3