fac n = case (==#) n 0 of { <1> -> 1 ; <0> -> (*#) n (fac ((-#) n 1)) }; main = fac 3;