Tiempo fuera de funciones puras

¿Cómo puedo "matar" un cálculo puro que está tomando demasiado tiempo? Lo intenté

<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>

Sin embargo, esto no funciona. Reemplace la(return . fact) 99999999 con una función IO "real" comogetLine y esto funciona como se esperaba.

Respuestas a la pregunta(1)

Su respuesta a la pregunta