我正在开发一个Haskell项目,我开始组织它是这样的:
blah.hs
拥有大部分代码blah_main.hs
有主程序blah_test.hs
包含测试用例。问题在于限制blah.hs
导出的功能意味着限制可以从blah_test.hs
测试的功能。这个问题有好办法吗?因为我真的想为blah.hs
未导出的某些“内部”函数编写测试代码。
谢谢, 利
答案 0 :(得分:18)
将内部函数从Blah.*
模块移至Blah.Internal.*
。您可以将库中的内部模块隐藏在other-modules
文件的blah.cabal
字段中(而不是exposed-modules
,其中列出了用户可见的所有模块)。请查看Hakyll的.cabal file作为示例。
答案 1 :(得分:8)
我同意米哈伊尔的观点,但在某些情况下,实际上并不可能做出这样的分歧。在这些情况下,我建议使用CPP(C预处理器)扩展,类似于:
module Blah
( public
#if TEST
, private
#endif
) where