fix other mandelbrot variants
[mu.git] / archive / 0.vm.arc / tangle.mu
blob3e73dd891f766cc2306acc7211c3c7e04e8d67c5
1 ; To demonstrate tangle directives, we'll construct a factorial function with
2 ; separate base and recursive cases. Compare factorial.mu.
3 ; This isn't a very realistic example, just a simple demonstration of
4 ; possibilities.
6 (function factorial [
7   (default-space:space-address <- new space:literal 30:literal)
8   (n:integer <- next-input)
9   { begin
10     base-case
11   }
12   recursive-case
15 (after base-case [
16   ; if n=0 return 1
17   (zero?:boolean <- equal n:integer 0:literal)
18   (break-unless zero?:boolean)
19   (reply 1:literal)
22 (after recursive-case [
23   ; return n*factorial(n-1)
24   (x:integer <- subtract n:integer 1:literal)
25   (subresult:integer <- factorial x:integer)
26   (result:integer <- multiply subresult:integer n:integer)
27   (reply result:integer)
30 (function main [
31   (1:integer <- factorial 5:literal)
32   ($print (("result: " literal)))
33   (print-integer nil:literal/terminal 1:integer)
34   (print-character nil:literal/terminal ((#\newline literal)))