gpt4 book ai didi

haskell - 纯函数超时

转载 作者:行者123 更新时间:2023-12-02 06:58:29 25 4
gpt4 key购买 nike

如何“杀死”耗时太长的纯计算?我试过了

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 替换为“真正的”IO 函数,例如 getLine,这将按预期工作。

最佳答案

重点是

return (fact 999999999)

立即返回,不触发超时。它返回一个 thunk,稍后将对其进行评估。

如果强制计算返回值,

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

它应该触发超时(如果您提供足够大的堆栈,以便在堆栈溢出之前发生超时)。

关于haskell - 纯函数超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com