ああ!http://www.haskell.org/ghc/docs/latest/html/libraries/ghc-6.12.1/GHC.htmlで、ドキュメントへのはるかに優れたエントリ ポイントを見つけました
。
この例でウィキページを更新しました:
ここでは、parseModule、typecheckModule、desugarModule、getNamesInScope、および getModuleGraph の呼び出しを示します。これは、haskell-platform、ghc-6.12.1 で機能します。
バグ: libdir はハードコーディングされています。上記の ghc-paths を参照してください。
--A.hs
--invoke: ghci -package ghc A.hs
import GHC
import Outputable
--import GHC.Paths ( libdir )
import DynFlags ( defaultDynFlags )
libdir = "/usr/local/lib/ghc-6.12.1"
targetFile = "B.hs"
main = do
res <- example
print $ showSDoc ( ppr res )
example =
defaultErrorHandler defaultDynFlags $ do
runGhc (Just libdir) $ do
dflags <- getSessionDynFlags
setSessionDynFlags dflags
target <- guessTarget targetFile Nothing
setTargets [target]
load LoadAllTargets
modSum <- getModSummary $ mkModuleName "B"
p <- parseModule modSum
t <- typecheckModule p
d <- desugarModule t
l <- loadModule d
n <- getNamesInScope
c <- return $ coreModule d
g <- getModuleGraph
mapM showModule g
return $ (parsedSource d,"/n-----/n", typecheckedSource d)
--B.hs
module B where
main = print "Hello, World!"