4
有什麼方法(標誌或黑客)讓GHC接受主功能的簽名不是IO()
的主模塊?對於Fay,主要功能的類型爲Fay()
,但如果模塊爲Main(或模塊名稱被忽略),GHC不接受此選項。使GHC接受主功能不是IO的主模塊()
有什麼方法(標誌或黑客)讓GHC接受主功能的簽名不是IO()
的主模塊?對於Fay,主要功能的類型爲Fay()
,但如果模塊爲Main(或模塊名稱被忽略),GHC不接受此選項。使GHC接受主功能不是IO的主模塊()
對於某些a
,程序的入口點必須具有類型IO 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而言。
這個問題應該解決什麼問題?你關心安全嗎? –
問題是我們使用GHC進行類型檢查,除了'Main.main'情況下,我們使用類型'Fay()',因爲我們沒有IO monad,所以它工作正常。 –
你可以插入'dummy :: IO()'並用'-main-Main.dummy'編譯。 –