是否有某种方式(旗帜或黑客)使GHC接受主要功能的签名不是IO ()
的主模块?对于Fay,主函数的类型为Fay ()
,但如果模块为Main(或模块名称省略),则GHC不接受此函数。
答案 0 :(得分:9)
对于某些IO a
,程序的入口点必须具有类型a
,据我所知,没有办法让GHC接受其他类型(不修改其源代码)。
默认情况下,入口点为Main.main
,但您可以使用GHC的-main-is
标志将不同的操作指定为入口点。一般形式是
ghc -main-is Module.action ModuleThatImportsEverything.hs -o programme
如果模块为Module
,
Main
部分
ghc -main-is action ModuleThatImportsEverything.hs -o programme
或action
部分,如果其名称为main
,
ghc -main-is Module ModuleThatImportsEverything.hs -o programme
相当于-main-is Module.main
。
对于您的情况,您可以向Main
模块或虚拟模块添加虚拟操作 - 当然需要从Main
模块直接或间接导入 - 到就GHC而言,该计划作为切入点。