1

我想创建一个非 Haskell 程序员可以理解的人类可读的 DSL,用于创建外部系统黑盒测试的规范。

我想知道在 Haskell 中是否可以做这样的事情。

action = readProcess "sleep 1; print success"

prop_action = monadicIO $
    within 100000 >>=
    repliesWith (== "success")

within :: Int -> IO a -> IO
within t = fromMaybe False $ timeout t

repliesWith :: (a -> Bool) -> IO a -> IO Bool
repliesWith v = liftM v

在这里,我给出了一个伪代码,用于检查操作是否会在 0.1 秒内返回值“成功”。似乎我需要某种单子来短路错误值,以链接多个检查,将值从一个传递到另一个。

感觉应该存在这样的东西。也许您可以建议一个库或如何在 Haskell 中实现我的想法。

4

0 回答 0