-- tail recursive definition of factorial, using a helper function factorial_tail(n) = fac_helper(1,n) fac_helper(p, 0) = p fac_helper(p, n) = fac_helper(p*n, n-1) -- simple recursive definition of factorial (can get inefficient for large n) factorial(n) = if n>0 then n*factorial(n-1) else 1 main = print $ factorial_tail(15)