如何在提示中强制解释

时间:2011-08-21 09:21:27

标签: haskell ghc hint ghc-api

如何在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")

1 个答案:

答案 0 :(得分:4)

在使用GHCi / Hint时,使用-fforce-recomp选项似乎强制解释。

unsafeSetGhcOption "-fforce-recomp"

虽然我找不到任何文档来验证这一点,但GHCi / Hint重用GHC的重新编译检查似乎是合理的。


更新:我发现GHC ticket #2542更多了,其中声明在模块名称前面加上星号将强制解释GHCi。 这也在the documentation中得到确认。

:load *test.hs

这似乎也延续到提示,所以这也有效:

loadModules ["*" ++ mname ++ ".hs"]