diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
commit | 2a4088119cf41175457414dfa59bd4064b8f0562 (patch) | |
tree | 64fe184e399f9870ebd481a90eec34d51e5dff68 /archive/1.vm/counters.mu | |
parent | 23fd294d85959c6b476bcdc35ed6ad508cc99b8f (diff) | |
download | mu-2a4088119cf41175457414dfa59bd4064b8f0562.tar.gz |
5852
Diffstat (limited to 'archive/1.vm/counters.mu')
-rw-r--r-- | archive/1.vm/counters.mu | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/archive/1.vm/counters.mu b/archive/1.vm/counters.mu new file mode 100644 index 00000000..ea2fa77d --- /dev/null +++ b/archive/1.vm/counters.mu @@ -0,0 +1,29 @@ +# example program: maintain multiple counters with isolated lexical scopes +# (spaces) + +def new-counter n:num -> default-space:space [ + default-space <- new location:type, 30 + load-inputs # initialize n +] + +def increment-counter outer:space/names:new-counter, x:num -> n:num/space:1 [ + local-scope + load-inputs + 0:space/names:new-counter <- copy outer # setup outer space; it *must* come from 'new-counter' + n/space:1 <- add n/space:1, x +] + +def main [ + local-scope + # counter A + a:space/names:new-counter <- new-counter 34 + # counter B + b:space/names:new-counter <- new-counter 23 + # increment both by 2 but in different ways + increment-counter a, 1 + b-value:num <- increment-counter b, 2 + a-value:num <- increment-counter a, 1 + # check results + $print [Contents of counters], 10/newline + $print [a: ], a-value, [ b: ], b-value, 10/newline +] |