我是 haskell 的新手。我读过this回答,我还想测试我的函数的类型,如果有办法做到这一点。 这是一个示例:test.hs
module Test where
import Test.HUnit
test1 = TestCase (assertEqual "test1" 3 (length [1,2,3]))
tests = TestList [test1]
main :: IO Counts
main = runTestTT tests
我正在使用 runghc test.hs
运行代码,我得到:
Cases: 1 Tried: 1 Errors: 0 Failures: 0
现在,如何测试 length
函数的类型?
我已经尝试添加第二个测试 test2 = TestCase (assertEqual "test2""length::Foldable t => t a -> Int":type length)
,但我得到了这个 错误 test.hs:5:77:输入“类型”时解析错误
。
谢谢
最佳答案
为类型编写测试几乎绝对不是您想要的。由于 Haskell 是静态类型的,编译器会在您编译时自动检查类型,无需运行任何代码或测试。如果 length
没有兼容的类型,那么当您尝试加载代码时就会出现类型错误。
:type
是来自 ghci
的特殊命令,而不是实际的 Haskell 语法。你不能直接在普通程序中使用它。有多种方法可以获取表示类型的值,但它们有些复杂,而且几乎肯定不是您需要的。
关于haskell - 测试函数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32829760/