ref: a8b1fadd149126e9c8d3081a56d206812211f1e6
dir: /dat.h/
typedef struct Term Term; typedef struct Binding Binding; typedef struct Goal Goal; typedef struct Choicepoint Choicepoint; typedef int (*Builtin)(Term *, Term *, Goal **, Choicepoint **, Binding **); struct Term { int tag; Rune *text; int arity; Term *next; Term *children; int numbertype; vlong ival; double dval; uvlong clausenr; }; struct Binding { Rune *name; uvlong nr; /* Unique number for each clause. Every time a clause is used, it gets a new number. */ Term *value; Binding *next; }; struct Goal { Term *goal; Goal *next; }; struct Choicepoint { Goal *goalstack; Term *retryclause; uvlong id; /* Unique number for each clause. Used to know where to cut to. */ Choicepoint *next; }; enum { CompoundTerm, AtomTerm, VariableTerm, NumberTerm, StringTerm, }; enum { NumberInt, NumberFloat, }; int debug; Term *initgoals;