summaryrefslogtreecommitdiff
path: root/misc.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2021-06-30 00:07:49 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2021-06-30 00:07:49 +0000
commitd5ce41f05bc322fa2fb4d0eee66080b3b3004853 (patch)
tree653b634d922632f52340420bc7495643f1c0bbce /misc.c
parent9799fbd9e8c7fd186365c628bf2024d458dafc75 (diff)
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
Diffstat (limited to 'misc.c')
-rw-r--r--misc.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/misc.c b/misc.c
index dcd5e17..28ba45c 100644
--- a/misc.c
+++ b/misc.c
@@ -5,6 +5,20 @@
#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)
{
if(a == nil)