Haskell中的模块

Anc*_*end 1 haskell module

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

add a b = a + b
Run Code Online (Sandbox Code Playgroud)

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

我不知何故应该将测试用例加载到GHC,GHC将自动运行,并找到该add.hs功能.

我真的不确定如何实现这一目标,并希望得到任何澄清,因为我花了很多时间试图解决这个问题.

提前谢谢了.

Tho*_*son 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
Run Code Online (Sandbox Code Playgroud)

在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)
Run Code Online (Sandbox Code Playgroud)

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

$ 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.
Run Code Online (Sandbox Code Playgroud)

编辑:

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

... run "ghci Test.hs" ...
> main
+++ OK, passed 100 tests.
Run Code Online (Sandbox Code Playgroud)