使GHC接受主模块的主要功能不是IO()

时间:2012-10-03 06:42:18

标签: haskell ghc

是否有某种方式(旗帜或黑客)使GHC接受主要功能的签名不是IO ()的主模块?对于Fay,主函数的类型为Fay (),但如果模块为Main(或模块名称省略),则GHC不接受此函数。

1 个答案:

答案 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而言,该计划作为切入点。