1 # example program: constructing functions out of order 2 # 3 # We construct a factorial function with separate base and recursive cases. 4 # Compare factorial.mu. 5 # 6 # This isn't a very tasteful example, just a basic demonstration of 7 # possibilities. 8 9 def factorial n:num -> result:num [ 10 local-scope 11 load-ingredients 12 <factorial-cases> 13 ] 14 15 after <factorial-cases> [ 16 # if n=0 return 1 17 return-unless n, 1 18 ] 19 20 after <factorial-cases> [ 21 # return n * factorial(n - 1) 22 { 23 ¦ break-unless n 24 ¦ x:num <- subtract n, 1 25 ¦ subresult:num <- factorial x 26 ¦ result <- multiply subresult, n 27 ¦ return result 28 } 29 ] 30 31 def main [ 32 1:num <- factorial 5 33 # trailing space in next line is to help with syntax highlighting 34 $print [result: ], 1:num, [ 35 ] 36 ]