Hugs December-2001 has the following behaviour: let fact a x = if x <= 1 then a else fact (a * x) (x - 1) in fact 1 8000 {- a darn large number -} let fact a x = if x <= 1 then a else (fact $! a * x) (x - 1) in fact 1 9000 {- a much bigger number -} let fact a x = if x <= 1 then a else fact (a * x) (x - 1) in fact 1 9000 Segmentation fault best, leon