我是哈斯凯尔的新手.我读了这个答案,我还想测试我的函数的类型,如果有办法的话.这是一个例子: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
Run Code Online (Sandbox Code Playgroud)
我正在运行代码,runghc test.hs我得到:
Cases: 1 Tried: 1 Errors: 0 Failures: 0
Run Code Online (Sandbox Code Playgroud)
现在,我该如何测试length函数的类型?
我已经尝试添加第二个测试test2 = TestCase (assertEqual "test2" "length :: Foldable t => t a -> Int" :type length),但是我收到了这个错误 test.hs:5:77: parse error on input 'type'.
谢谢
Tik*_*vis 10
编写一个测试类型是几乎可以肯定不是你想要的.由于Haskell是静态类型的,编译器会在编译时自动为您检查类型,而无需运行任何代码或测试.如果length没有兼容类型,如果您尝试加载代码,则会出现类型错误.
:type是一个特殊的命令ghci,而不是实际的Haskell语法.您不能在正常程序中直接使用它.有一些方法可以获得表示类型的值,但它们有点复杂,而且几乎绝对不是您需要的.