1factorial_standard : n :Int , Int =
2 if lt n 2
3 then
4 1
5 else
6 mul n (factorial_standard (minus n 1));
7
8
9factorial_acc : n:Int , acc:Int, Int =
10 if lt n 2
11 then
12 acc
13 else
14 factorial_acc (minus n 1) (mul n acc);
15
16factorial_acc_sass : n:Int, acc:Int, Int =
17 if lt n 2
18 then
19 acc
20 else
21 let new_n = minus n 1;
22 new_acc = mul n acc;
23 in
24 factorial_acc_sass new_n new_acc
25 ;
26