diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-05-05 21:17:24 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-05-05 21:17:24 -0700 |
commit | b96af395b9af2ff9df94b3e82213171f30827c8d (patch) | |
tree | 17c8c12648ccc25625e2534ec8d74fbe8f1542cc /counters.mu | |
parent | 2e3b597fe85b654e82b891c22d50754fa5a26156 (diff) | |
download | mu-b96af395b9af2ff9df94b3e82213171f30827c8d.tar.gz |
1276 - make C++ version the default
I've tried to update the Readme, but there are at least a couple of issues.
Diffstat (limited to 'counters.mu')
-rw-r--r-- | counters.mu | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/counters.mu b/counters.mu index 0e414513..4662b833 100644 --- a/counters.mu +++ b/counters.mu @@ -1,33 +1,35 @@ -(function init-counter [ - (default-space:space-address <- new space:literal 30:literal) - (n:integer <- next-input) - (reply default-space:space-address) - ]) +# example program: maintain multiple counters with isolated lexical scopes +# (spaces) -(function increment-counter [ - (default-space:space-address <- new space:literal 30:literal) - (0:space-address/names:init-counter <- next-input) ; setup outer space; it *must* come from 'init-counter' - (x:integer <- next-input) - (n:integer/space:1 <- add n:integer/space:1 x:integer) - (reply n:integer/space:1) - ]) +recipe init-counter [ + default-space:address:array:location <- new location:type, 30:literal + n:integer <- next-ingredient + reply default-space:address:space +] -(function main [ - (default-space:space-address <- new space:literal 30:literal) - ; counter A - (a:space-address <- init-counter 34:literal) - ; counter B - (b:space-address <- init-counter 23:literal) - ; increment both by 2 but in different ways - (increment-counter a:space-address 1:literal) - (bres:integer <- increment-counter b:space-address 2:literal) - (ares:integer <- increment-counter a:space-address 1:literal) - ; check results - ($print (("Contents of counters a: " literal))) - (print-integer nil:literal/terminal ares:integer) - ($print ((" b: " literal))) - (print-integer nil:literal/terminal bres:integer) - ($print (("\n" literal))) - ]) +recipe increment-counter [ + default-space:address:array:location <- new location:type, 30:literal + 0:address:array:location/names:init-counter <- next-ingredient # setup outer space; it *must* come from 'init-counter' + x:integer <- next-ingredient + n:integer/space:1 <- add n:integer/space:1, x:integer + reply n:integer/space:1 +] -; compare http://www.paulgraham.com/accgen.html +recipe main [ + default-space:address:array:location <- new location:type, 30:literal + # counter A + a:address:space <- init-counter 34:literal + # counter B + b:address:space <- init-counter 23:literal + # increment both by 2 but in different ways + increment-counter a:address:space, 1:literal + bres:integer <- increment-counter b:address:space, 2:literal + ares:integer <- increment-counter a:address:space, 1:literal + # check results + $print [Contents of counters a: ] + $print ares:integer + $print [ b: ] + $print bres:integer + $print [ +] +] |