module Main where import qualified GHC import qualified DynFlags import qualified Packages import qualified PackageConfig import qualified Outputable -- edit this to point to your ghc installation directory myGhcRoot = "/usr/local/lib/ghc-6.6" main = GHC.defaultErrorHandler DynFlags.defaultDynFlags $ do putStrLn "Starting" session <- GHC.newSession GHC.Interactive $ Just myGhcRoot dflags1 <- GHC.getSessionDynFlags session (dflags2, packageIds) <- Packages.initPackages dflags1 GHC.setSessionDynFlags session dflags2{GHC.hscTarget=GHC.HscInterpreted} putStrLn "New session defined" let preludeModule = GHC.mkModule (PackageConfig.stringToPackageId "base") (GHC.mkModuleName "Prelude") GHC.setContext session [] [preludeModule] putStrLn "Context set" let stmt1 = "let n = 2 + 2" runResult <- GHC.runStmt session stmt1 putStrLn $ "Result is " ++ case runResult of GHC.RunOk names -> "OK: " ++ (Outputable.showSDoc $ Outputable.ppr names) _ -> "Failed"