Recursion 2
Factorial can be written so that it is tail-end recursive. This usually means that it can be optimised so that the call stack does not grow indefinetly. In a lazy language like MISC this doesn't help much. A version of factorial with an accumulator simply creates a indefinite thunk rather than a stack. Thus it is possible to force evaluation with the force function. force forces the evaluation of the first argument and returns the second. Without forcing evaluation of its arguments the factorial function will fail for larger numbers as it runs out of memory.