fact :: Integer -> Integer
fact(n) = factIter(n,1)

factIter :: (Integer, Integer) -> Integer
factIter(0,j) = j
factIter(n+1,j) = factIter(n, (n+1)*j)
