diff options
author | olpc user <olpc@xo-5d-f7-86.localdomain> | 2019-12-09 02:49:25 -0800 |
---|---|---|
committer | olpc user <olpc@xo-5d-f7-86.localdomain> | 2019-12-09 02:49:25 -0800 |
commit | 8d238e65a88502b897f1944b7844afffdbc0d761 (patch) | |
tree | df460a7554ebcc0c162a3c5c67b17bfc38f0b4c0 | |
parent | f5ec96b6f4f88065b4cc6c24057af15d1f025ad4 (diff) | |
download | standingwithresilience-8d238e65a88502b897f1944b7844afffdbc0d761.tar.gz standingwithresilience-8d238e65a88502b897f1944b7844afffdbc0d761.zip |
level 1 subref operator
-rw-r--r-- | starts/meaning-vm/level-1/baseref.hpp | 1 | ||||
-rw-r--r-- | starts/meaning-vm/level1.cpp | 10 |
2 files changed, 6 insertions, 5 deletions
diff --git a/starts/meaning-vm/level-1/baseref.hpp b/starts/meaning-vm/level-1/baseref.hpp index 187b5df..e97db2d 100644 --- a/starts/meaning-vm/level-1/baseref.hpp +++ b/starts/meaning-vm/level-1/baseref.hpp @@ -28,6 +28,7 @@ struct baseref : public level0::baseref<ref> explicit operator char const *() const { return getname(self)->data.c_str(); } ref operator-(ref other) const { return hyphenate(self, other); } + ref operator[](ref subref) const { return self.get(subref); } template <typename T> void vset(ref const & type, T const & v) { self.set(type, level1::alloc(v)); } diff --git a/starts/meaning-vm/level1.cpp b/starts/meaning-vm/level1.cpp index 2e005e2..9498ddf 100644 --- a/starts/meaning-vm/level1.cpp +++ b/starts/meaning-vm/level1.cpp @@ -38,11 +38,11 @@ int main() ); (make-linked).fset( act, - (std::function<void(ref)>)[](ref args) + (std::function<void(ref)>)[&](ref args) { - ref source = args.get("A"); - ref type = args.get("B"); - ref target = args.get("C"); + ref source = args[A]; + ref type = args[B]; + ref target = args[C]; std::cout << "Linking " << source.name() << " by " << type.name() << " to " << target.name() << std::endl; source.link(type, target); } @@ -51,7 +51,7 @@ int main() std::cout << (make-linked).dump("dumped", true) << std::endl; decls(apple, fruit); - (make-linked).get(act) + (make-linked)[act] (a(function-argument) .link( A, apple, |