mul a b = code mul a b; sub a b = code sub a b; foldr op r [] = r; foldr op r [a:x] = op a (foldr op r x); prod = foldr mul 1; faclist 0 = []; faclist n = [n:faclist (sub 1 n)]; fac n = prod (faclist n); main = fac 4;