Haskell 评估时间限制

标签 haskell time

有谁知道有一个函数只允许一定的时间来执行函数。具有这样的类型签名的东西。

limited::Int->(a->b)->a->IO (Maybe b)

我想不出如何实现,也找不到。我问的原因是我要列出所有可能的Brainfuck程序,我想过滤掉那些花费太长时间的程序。

最佳答案

a dedicated function来自 System.Timeout:

timeout :: Int -> IO a -> IO (Maybe a)

要按照您编写的方式使用,只需使用

limited t f x = timeout t $ do
     let y = f x
     y `seq` return y

请记住,Haskell 的惰性意味着任何值都是其他语言可能称之为“零参数的内存函数”的值,因此您实际上并不需要 (a->b) -> a -> .

关于Haskell 评估时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20752083/

相关文章:

Android:更新用户界面的循环中的时间延迟

javascript - "Object expected"尝试在 Javascript 上输入时间

C++ MFC 获取当前日期和时间

haskell - 使用有序 Int 压缩 Set

haskell : understanding "No instance for" error messages in ghci

haskell : force evaluation/avoid garbage collecting when composing functions

linux - 如何检索当前分钟并检查该分钟是否在文件中

time - 仅在特定时间运行的批处理文件

function - 根据类型为泛型函数提供不同的函数体

haskell - 将字符串列表应用于任意函数