summaryrefslogtreecommitdiff
path: root/starts/meaning-vm/habit-starts/learning-parts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'starts/meaning-vm/habit-starts/learning-parts.cpp')
-rw-r--r--starts/meaning-vm/habit-starts/learning-parts.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/starts/meaning-vm/habit-starts/learning-parts.cpp b/starts/meaning-vm/habit-starts/learning-parts.cpp
index eebd054..92afc7d 100644
--- a/starts/meaning-vm/habit-starts/learning-parts.cpp
+++ b/starts/meaning-vm/habit-starts/learning-parts.cpp
@@ -8,11 +8,33 @@ static int __init = ([]()->int{
ahabit(happened-habit,
{
ref ev = ctx.get(happens);
- // TODO: perform each associated event
+ // TODO: perform each event associated with ctx[happens] (see line above)
+
+ // use a sub-habit for each call, so we can handle happened for them, too.
});
ahabit(whenever-habit,
{
+ // store ctx[action] on ctx[happens] as behavior to do
+ // store ctx[action-context] as context for behavior
+ // PROPOSE: automatically place [happened] inside [action-context] as a stub
+ // for call event objects, and then place [context] inside [happened].
+ // PROPOSE: report error if [action-context] contains [happened]
+ // as a stub for error patterns, it would be pretty nice to throw
+ // a unique concept ref for each error type. plan to add to level-0.
+ });
+
+ ahabit(stop-when-habit,
+ {
+ // remove doing ctx[action] for ctx[happens]
+ });
+
+ ahabit(once-habit,
+ {
+ // takes ctx[action] and ctx[happens] and ctx[action-context]
+ // uses above habits to do the action only once, probably by using
+ // a trigger on the habit-happening habit to check if a label is set,
+ // and remove the habit if it is.
});
return 0;