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

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

import System.Timeout

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

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

Однако это не работает. Замените (return. fact) 99999999«настоящей» функцией ввода-вывода, такой как getLine, и она будет работать, как и ожидалось.

20
задан amindfv 9 April 2012 в 09:52
поделиться