如何在Hint(Language.Haskell.Interpreter)中强制解释模式?
我有这段代码:
module Main where
import Language.Haskell.Interpreter
import Control.Monad
main = do
res <- runInterpreter (test "test")
case res of
Left e -> putStrLn (show e)
Right t -> putStrLn (show t)
return ()
test :: String -> Interpreter ()
test mname =
do
loadModules [mname ++ ".hs"]
setTopLevelModules ["Main"]
将导致(基于here的答案):
NotAllowed "These modules are not interpreted:\nMain\n"
只有GHC找到test.o!
我试过
unsafeSetGhcOption ("-fbyte-code")
答案 0 :(得分:4)
在使用GHCi / Hint时,使用-fforce-recomp
选项似乎强制解释。
unsafeSetGhcOption "-fforce-recomp"
虽然我找不到任何文档来验证这一点,但GHCi / Hint重用GHC的重新编译检查似乎是合理的。
更新:我发现GHC ticket #2542更多了,其中声明在模块名称前面加上星号将强制解释GHCi。 这也在the documentation中得到确认。
:load *test.hs
这似乎也延续到提示,所以这也有效:
loadModules ["*" ++ mname ++ ".hs"]