From 20d1c9057a559ce8db83bbc2787ca91348bcb16f Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 5 May 2015 23:50:50 -0700 Subject: 1278 - support before/after tangle directives No way to only insert code at a label in a specific recipe. Let's see how that goes. --- tangle.mu | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tangle.mu (limited to 'tangle.mu') 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 [ +] +] -- cgit 1.4.1-2-gfad0