``` while (n > 0) { acc *= n; n--; } ``` ``` loop if (n > 0) acc *= n; n--; recur; --next ``` ``` fix (\rec -> if (n > 0) acc *= n; n--; rec; ) ``` ``` factorial = fix (\rec n acc -> if n == 0 then acc else rec (n - 1) (n * acc) ) ``` ---- <~ >~ =~ &~ |~