
Hi, On 2011-February-27 Sunday 16:20:06 Edward Amsden wrote:
Secondly,
I'd like to get to a GHC session that just has, say, Prelude in scope so I can use dynCompileExpr with "show" etc, but I cannot figure out how to bring it into scope. The closest I got was to get GHC complaining that it was a package module.
I don't know if setContext is the proper/best way to do it, but it seems to work: import GHC import GHC.Paths ( libdir ) import DynFlags ( defaultDynFlags ) import Module(stringToPackageId, mkModuleName) import Data.Dynamic(fromDynamic) import System.Environment evalString s = defaultErrorHandler defaultDynFlags $ do runGhc (Just libdir) $ do dflags <- getSessionDynFlags setSessionDynFlags dflags setContext [] [ (mkModule (stringToPackageId "base") (mkModuleName "Prelude") ,Nothing) ] dyn <- dynCompileExpr s return $ fromDynamic dyn main = do (s:_) <- getArgs e <- evalString s putStrLn $ maybe "oops" id e