factorial n = tr n 1 where tr 0 f = f tr n f = tr (n-1) (n*f)