foo:: Int -> Int -> Int
foo z x = if (z < 100)
then z * foo (z+(x*z)) z
else z
Как бы вы печатаете (целое число z) вывод каждый раз, когда он вызывается из самого себя? Может ли у вас быть функция, которая возвращает IO и Int? Вам нужна дополнительная функция?