3

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"]

結果は(ここからの回答に基づいて):

NotAllowed "These modules are not interpreted:\nMain\n"

GHC が test.o! を見つけた場合のみ

私はもう試した

unsafeSetGhcOption ("-fbyte-code")
4

1 に答える 1

4

この-fforce-recompオプションを使用すると、GHCi/Hint から使用すると解釈が強制されるようです。

unsafeSetGhcOption "-fforce-recomp"

これを確認するためのドキュメントは見つかりませんでしたが、GHCi/Hint が GHC からの再コンパイル チェックを再利用することは妥当と思われます。


UPDATE : もう少し調べてみると、 GHC チケット #2542が見つかりました。ここでは、モジュール名の前にアスタリスクを付けると、GHCi での解釈が強制されると記載されています。これはドキュメントでも確認されています。

:load *test.hs

これは Hint にも引き継がれているように見えるため、これも機能します。

loadModules ["*" ++ mname ++ ".hs"]
于 2011-08-21T15:13:33.370 に答える