factorial :: Int -> Int factorial n = iter n 1 where iter 0 r = r iter n r = iter (n-1) (n*r) What is the name of 'iter n 1' What is the name of everything after the where clause. How does the pattern matching take place. It seems reversed because iter n 1, 1 is a literal , not a value to match.