2015-05-06 04:17:24 +00:00
|
|
|
# example program: compute the factorial of 5
|
|
|
|
|
2016-03-08 09:30:14 +00:00
|
|
|
def main [
|
2015-07-14 05:43:16 +00:00
|
|
|
local-scope
|
2016-09-17 07:43:13 +00:00
|
|
|
x:num <- factorial 5
|
2015-07-29 08:23:22 +00:00
|
|
|
$print [result: ], x, [
|
2015-05-06 04:17:24 +00:00
|
|
|
]
|
|
|
|
]
|
|
|
|
|
2016-09-17 07:43:13 +00:00
|
|
|
def factorial n:num -> result:num [
|
2015-07-14 05:43:16 +00:00
|
|
|
local-scope
|
2017-12-04 07:25:40 +00:00
|
|
|
load-inputs
|
2017-10-05 04:26:42 +00:00
|
|
|
{
|
|
|
|
# if n=0 return 1
|
|
|
|
zero?:bool <- equal n, 0
|
|
|
|
break-unless zero?
|
|
|
|
return 1
|
|
|
|
}
|
2015-06-25 20:05:27 +00:00
|
|
|
# return n * factorial(n-1)
|
2016-09-17 07:43:13 +00:00
|
|
|
x:num <- subtract n, 1
|
|
|
|
subresult:num <- factorial x
|
2015-11-11 17:13:40 +00:00
|
|
|
result <- multiply subresult, n
|
2015-05-06 04:17:24 +00:00
|
|
|
]
|
2014-11-17 09:19:21 +00:00
|
|
|
|
2015-05-06 04:17:24 +00:00
|
|
|
# unit test
|
|
|
|
scenario factorial-test [
|
|
|
|
run [
|
2016-09-17 07:43:13 +00:00
|
|
|
1:num <- factorial 5
|
2015-05-06 04:17:24 +00:00
|
|
|
]
|
2015-05-26 18:26:10 +00:00
|
|
|
memory-should-contain [
|
2015-05-06 04:17:24 +00:00
|
|
|
1 <- 120
|
|
|
|
]
|
|
|
|
]
|