如何在Haskell中实现`assertFail`?

时间:2019-03-27 13:20:08

标签: haskell

在实现自己的工具模块和功能时,我想确保我的函数在特定输入(例如assertFail (head []))上失败,但是似乎无法在Haskell中实现此assertFail函数有什么办法可以破解吗?

2 个答案:

答案 0 :(得分:3)

如果我正确理解了您的要求,则可以使用spoon

import Control.Spoon

assertFail x = case spoon x of
    Nothing -> ()
    Just _ -> error "unexpected success"

一个相关的问题:Is spoon unsafe in Haskell?

答案 1 :(得分:0)

一种实现原型 assertFail的方法可能是assertFail = undefined,因为evaluating it would raise a runtime exception。另一个将使用error

如果您要构建测试框架,则正确的设计可能会涉及全部功能(永远不会引发运行时错误),这些功能会返回Maybe String之类的错误消息。

如果确实需要assertRaises,请查看Control.Exception,这可能会有所帮助。