From 8565b47b9e8a59ac06e4f739d63218b0f1e5cb05 Mon Sep 17 00:00:00 2001 From: olpc user Date: Fri, 22 Nov 2019 13:35:48 -0800 Subject: basic habit state change meaning boilerplate --- starts/meaning-vm/main.cpp | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'starts/meaning-vm/main.cpp') diff --git a/starts/meaning-vm/main.cpp b/starts/meaning-vm/main.cpp index 1392957..f9f8118 100644 --- a/starts/meaning-vm/main.cpp +++ b/starts/meaning-vm/main.cpp @@ -5,10 +5,47 @@ using namespace std; #include +void dumpconcept(ref r) +{ + declrefs(dumped); + + for (auto & l : r->links) { + cout << r << " " << l.first << " " << l.second << endl; + } + if (!r->linked(dumped)) { + r[dumped = true]; + } + for (auto & l : r->links) { + if (!l.second->linked(dumped)) { + dumpconcept(l.second); + } + } +} + int main() { - decl(fruit, banana, is); + declrefs(is, link, type); + is->link(is, link-type); + + declrefs(source, target); + declrefs(linked, A, B, C, abc, variable); + declrefs(trueness, truth, what, not); + + declrefs(add, unique, habit, needs, assumes, makes); + A[is = variable]; + B[is = variable]; + C[is = variable]; + + // add a new unique link to a concept + // given A, B, C + // and assuming A is not linked by B to C, + // makes A be linked by B to C. + (add-link-unique)[ + is = habit, + needs = A, needs = B, needs = C, + makes = (abc-linked)[is = link, link-source = A, link-type = B, link-target = C], + assumes = (abc-not-linked)[is = trueness, what = abc-linked, truth = false] + ]; - banana->link(is, fruit); - cout << banana << "-" << is << "-" << fruit << endl; + dumpconcept(add-link-unique); } -- cgit v1.2.3