我正在尝试为我用 Haskell 编写的一个简单的井字游戏程序设置一系列测试,但由于一个奇怪的错误被抛出读取,我无法通过我的第一个测试:
Tests.hs:11:61: error:
* Couldn't match expected type `Int' with actual type `IO Int'
* In the third argument of `assertEqual', namely
`(test_user_value x)'
In the first argument of `TestCase', namely
`(assertEqual "for (test_user_value 3)," f (test_user_value x))'
In the expression:
TestCase
(assertEqual "for (test_user_value 3)," f (test_user_value x))
|
11 | test1 = TestCase (assertEqual "for (test_user_value 3)," f (test_user_value x))
| ^^^^^^^^^^^^^^^^^
Failed, one module loaded.
值“x”是一个 int,但 Haskell 将其读取为“IO Int”,这是错误的,因为我指定了“x :: Int”。正在测试的函数已被指定为“test_user_value :: Int -> IO Int”,所以我不确定它为什么错误地解释了变量。任何建议,将不胜感激。