summaryrefslogtreecommitdiff
path: root/starts/meaning-vm/habit-starts/learning-parts.hpp
blob: a446a1dde67b486097ed6e86ef91781f305123aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#pragma once

#include "common.hpp"

namespace habitstarts {

// first need ability to trigger on stuff.
// whenever A happens, do B.
// stop doing B whenever A happens.
// when A happens, do B once.

decl(action, happens, context);
decl(happened); // happened-habit(ctx) performs actions associated with ctx[happens]
decl(whenever); // whenever-habit(ctx) stores to do ctx[action] when ctx[happens] happens
                // providing ctx[action-context]
decl(stop); decl(when); // stop-when-habit(ctx) removes doing ctx[happens] on ctx[event]
decl(once); // once-habit(ctx) stores to do ctx[action] the next time ctx[happens] happens
            // providing ctx[action-context]

/*
	Testing metric: runs when event is fired, measures time between
	  event and right time.  if [usual] time is less than ever before, success.
	  if time is significantly more than behavior's norm, failure.
	Convert to English: try to have the event happen at the right time.
*/
// starting out by making a judgement habit that occasionally provides 'good' or 'bad' to things, to lead how to develop
	// for fairness, seems reasonable to provide a pattern showing reason for good or bad
// 

// set to do 1ce at goal time:
// 	ctx X
// 	set to do 1ce on goal time:
// 		set next-happened (local)
// 	delay (a sequence of habits that do nothing)
// 	if next-happened is set
// 		remove something from delay
// 	otherwise
// 		add something to delay (wait for unspecified user-perceptible time, selected from discrete set)
// 	provide adjusted delay to next context

}