Тайм-аут чистых функций

Как я могу "убить" чистый расчет, который занимает слишком много времени? Я старался

<code>import System.Timeout

fact 0 = 1
fact n = n * (fact $ n - 1)

main = do maybeNum <- timeout (10 ^ 7) $ (return . fact) 99999999
          print maybeNum
</code>

Однако это не работает. Заменить(return . fact) 99999999 с "реальным" IO функционирует какgetLine и это работает как ожидалось.

Ответы на вопрос(1)

Ваш ответ на вопрос