haskell - 测试函数的类型

标签 haskell

我是 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/

相关文章:

haskell - 我实际上可以从同一个包中构建并运行一个可执行文件作为测试套件的一部分吗?

haskell - 简化 boolean 表达式的函数

haskell - 部分记录的安全替代方案?

data-structures - 最右边的 n 个整数的总数

file - openFile - 权限被拒绝 - 读取和写入同一文件时

haskell - 向类型类实例添加类约束

haskell - ConstraintKinds 解释了一个 super 简单的例子

haskell - 将随机数生成添加到 Haskell 中的 STM monad

algorithm - 这是 Haskell 中正确实现的合并排序吗?

Haskell 字节串 : How to pattern match?