factSafe = 1 : zipWith (*) [1..] factSafe
fact n = factSafe !! n