Last active 22 hours ago

An example of turning an isolated state machine into multiple.

multistate.nv Raw Playground
1|# A turnstile, a state machine. #|
2
3|:state: locked :action: push| :state: locked
4|:state: locked :action: coin| :state: un-locked
5
6|:state: un-locked :action: push| :state: locked
7|:state: un-locked :action: coin| :state: un-locked
8
9
10
11
12|# I want/need multiple machines. #|
13
14||:: create machine entrance :state: locked
15 :: create machine exit :state: locked
16 :: as entrance do
17 :: (push coin push)
18 :: end
19 :: as exit do
20 :: (coin push push coin)
21 :: end
22
23|:: create machine $x :state: $state|
24 :machines: $x $state
25
26|:: as $machine do|
27 :: unpack machine $machine
28 :: $machine is running
29
30|:: $machine is running :: end|
31 :: repack machine $machine
32 :: reset machines
33|:: $machine is running? :: $action|
34 :action: $action
35
36|:: unpack machine $x :machines: $x $state|
37 :state: $state
38|:: unpack machine $x? :machines: $y $state|
39 :checked machines: $y $state
40|:: unpack machine $x|
41 :not found: $x
42 :: reset machines
43
44|:: repack machine $x :state: $state|
45 :machines: $x $state
46
47|:: reset machines? :checked machines: $name $state|
48 :machines: $name $state
49|:: reset machines|