Как заставить интерпретацию в подсказке - PullRequest
3 голосов
/ 21 августа 2011

Как включить режим интерпретации в подсказке (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")

1 Ответ

4 голосов
/ 21 августа 2011

Использование опции -fforce-recomp, по-видимому, вызывает интерпретацию при использовании из GHCi / Hint.

unsafeSetGhcOption "-fforce-recomp"

Хотя я не смог найти никакой документации для проверки этого, кажется разумным, что GHCi / Hint будет повторно использовать проверку перекомпиляции из GHC.


ОБНОВЛЕНИЕ : копаясь немного больше, я нашел Билет GHC # 2542 , где указано, что префикс имени модуля со звездочкой вызовет интерпретациюв GHCi.Это также подтверждается в документации .

:load *test.hs

Это также относится и к подсказке, так что это также работает:

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