1

我是 Haskell 的新手。我对模块、它们是什么以及如何使用它们感到非常困惑。例如,我创建了一个add.hs包含如下简单函数的文件:

add a b = a + b

在名为 的文件中有一些测试用例addTestCases.hs,用于检查add.hs.

我应该以某种方式将测试用例加载到 GHC,它会自动运行并找到add.hs函数。

我真的不确定如何做到这一点,并希望得到任何澄清,因为我花了很多时间试图弄清楚这一点。

提前谢谢了。

4

2 回答 2

5

Add.hs您声明模块名称时:

-- Notice the module name matches the file name, this is typically required
module Add where

add :: Integer -> Integer -> Integer
add x y = x + y

在 Test.hs 你告诉它函数来自哪些模块:

-- Notice we didn't declare a module name, so it defaults to 'Main'
import Add
import Test.QuickCheck
main = quickCheck (\ x y -> x > 0 && y > 0 ==> add x y > x && add x y > y)

您现在可以编译并运行您的测试:

$ ghc Test.hs
[1 of 2] Compiling Add              ( Add.hs, Add.o )
[2 of 2] Compiling Main             ( Test.hs, Test.o )
Linking Test ...
$ ./Test
+++ OK, passed 100 tests.

编辑:

如果您在 GHCi 内部工作,并且如上所示从终端编译,那么您可以执行以下操作:

... run "ghci Test.hs" ...
> main
+++ OK, passed 100 tests.
于 2013-02-03T16:18:04.000 回答
1

添加module Add where为 add.hs 文件的第一行。然后,您在文件中定义的所有函数都将在模块内,Add并且可以通过写入import Add这些文件从其他文件中导入。

于 2013-02-03T16:06:06.750 回答