我是Haskell的新手。我对模块,它们是什么以及如何使用它们非常困惑。例如,我创建了一个add.hs
文件,其中包含一个简单的函数,如下所示:
add a b = a + b
在名为addTestCases.hs
的文件中有一些测试用例,用于检查add.hs
的功能。
我不知何故应该将测试用例加载到GHC,GHC将自动运行,并找到add.hs
函数。
我真的不确定如何做到这一点,并且会感谢任何澄清,因为我花了很多时间试图解决这个问题。
非常感谢提前。
答案 0 :(得分: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内部工作,并且如上所示从vs终端进行编译,那么您可以这样做:
... run "ghci Test.hs" ...
> main
+++ OK, passed 100 tests.
答案 1 :(得分:1)
添加module Add where
作为add.hs文件的第一行。然后,您在文件中定义的所有函数都将位于模块Add
内,并可以通过在这些文件中写入import Add
从其他文件导入。