diff options
Diffstat (limited to 'tangle.mu')
-rw-r--r-- | tangle.mu | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tangle.mu b/tangle.mu new file mode 100644 index 00000000..db890bc8 --- /dev/null +++ b/tangle.mu @@ -0,0 +1,36 @@ +# To demonstrate tangle directives, we'll construct a factorial function with +# separate base and recursive cases. Compare factorial.mu. +# This isn't a very realistic example, just a simple demonstration of +# possibilities. + +recipe factorial [ + default-space:address:array:location <- new location:type, 30:literal + n:integer <- next-ingredient + { + +base-case + } + +recursive-case +] + +after +base-case [ + # if n=0 return 1 + zero?:boolean <- equal n:integer, 0:literal + break-unless zero?:boolean + reply 1:literal +] + +after +recursive-case [ + # 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 +] + +recipe main [ + 1:integer <- factorial 5:literal + $print [result: ] + $print 1:integer + $print [ +] +] |