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 /factorial.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 'factorial.mu')
-rw-r--r-- | factorial.mu | 54 |
1 files changed, 34 insertions, 20 deletions
diff --git a/factorial.mu b/factorial.mu index 96a28fd3..8dd2f23f 100644 --- a/factorial.mu +++ b/factorial.mu @@ -1,22 +1,36 @@ -(function factorial [ - (default-space:space-address <- new space:literal 30:literal) - (n:integer <- next-input) - { begin - ; if n=0 return 1 - (zero?:boolean <- equal n:integer 0:literal) - (break-unless zero?:boolean) - (reply 1:literal) +# example program: compute the factorial of 5 + +recipe main [ + default-space:address:space <- new location:type, 30:literal + x:integer <- factorial 5:literal + $print [result: ] + $print x:integer + $print [ +] +] + +recipe factorial [ + default-space:address:array:location <- new location:type, 30:literal + n:integer <- next-ingredient + { + # if n=0 return 1 + zero?:boolean <- equal n:integer, 0:literal + break-unless zero?:boolean + reply 1:literal } - ; return n*factorial(n-1) - (x:integer <- subtract n:integer 1:literal) - (subresult:integer <- factorial x:integer) - (result:integer <- multiply subresult:integer n:integer) - (reply result:integer) -]) + # return n * factorial(n - 1) + x:integer <- subtract n:integer, 1:literal + subresult:integer <- factorial x:integer + result:integer <- multiply subresult:integer, n:integer + reply result:integer +] -(function main [ - (1:integer <- factorial 5:literal) - ($print (("result: " literal))) - (print-integer nil:literal/terminal 1:integer) - ($print (("\n" literal))) -]) +# unit test +scenario factorial-test [ + run [ + 1:integer <- factorial 5:literal + ] + memory should contain [ + 1 <- 120 + ] +] |