From d5ce41f05bc322fa2fb4d0eee66080b3b3004853 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Wed, 30 Jun 2021 00:07:49 +0000 Subject: 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 --- misc.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'misc.c') diff --git a/misc.c b/misc.c index dcd5e17..28ba45c 100644 --- a/misc.c +++ b/misc.c @@ -4,6 +4,20 @@ #include "dat.h" #include "fns.h" +Term * +copyterm(Term *orig) +{ + Term *new = malloc(sizeof(Term)); + memcpy(new, orig, sizeof(Term)); + new->next = nil; + new->children = nil; + + Term *child; + for(child = orig->children; child != nil; child = child->next) + new->children = appendterm(new->children, copyterm(child)); + return new; +} + Term * appendterm(Term *a, Term *b) { -- cgit v1.2.3