You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Cabal测试强制使用Main模块?Tests.hs无法识别问题解析

Cabal测试套件为何要求Main模块作为入口?
  • Cabal的测试套件本质是可执行程序,它依赖GHC编译生成可执行文件,而GHC对可执行程序有硬性规则:必须包含Main模块,且该模块里要有main函数作为程序入口。
  • 当你在.cabal中指定main-is: Tests.hs时,Cabal会通知GHC将这个文件编译为可执行测试程序。此时GHC会默认查找文件中的Main模块,若你的文件声明的是module Tests where,GHC找不到要求的Main模块,就会报错无法生成输出。
  • 如果你不想直接用Main作为测试文件的模块名,也可以通过拆分结构实现:在.cabal的测试套件部分添加other-modules: Tests,再单独创建一个Main.hs,在其中导入Tests模块并调用测试的main函数(比如main = Tests.main),不过这种方式不如直接将测试文件设为Main模块简便。

内容的提问来源于stack exchange,提问作者F. Zer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:09:52