module UHC.Light.Compiler.CoreRun.API
(
Mod
, Exp, MbExp
, SExp
, Alt
, Bind
, RRef
, Import
, Meta
, DataCon
, CRArray
, mkLocLevRef
, mkLocDifRef
, mkGlobRef
, mkImpRef
, mkModRef
, mkExp
, mkVar, mkVar'
, mkInt, mkInt'
, mkChar, mkChar'
, mkInteger, mkInteger'
, mkString, mkString'
, mkDbg, mkDbg'
, mkApp, mkApp'
, mkTup, mkTup'
, mkEval
, mkTail
, mkCase
, mkLam, mkLam'
, mkLet, mkLet'
, mkFFI, mkFFI'
, mkMetaDataCon, mkMetaDataType
, mkMod, mkMod', mkModWithMetas, mkModWithImportsMetas
, mkImport
, rrefToDif
, parseModFromString
, runCoreRunIO
, printModule
)
where
import UHC.Light.Compiler.Base.API
import UHC.Light.Compiler.CoreRun as CR
import UHC.Light.Compiler.CoreRun.Pretty as CR
import UHC.Light.Compiler.CoreRun.Parser as CR
import UHC.Light.Compiler.CoreRun.Run as CR
import UHC.Light.Compiler.CoreRun.Run.Val as CR
import UHC.Light.Compiler.CoreRun.Run.Val.RunExplStk as CR
import System.IO
import Control.Exception
import UHC.Util.Pretty
runCoreRunIO
:: EHCOpts
-> Mod
-> IO (Either Err RVal)
runCoreRunIO opts mod = do
catch
(runCoreRun opts [] mod $ cmodRun opts mod)
(\(e :: SomeException) -> hFlush stdout >> (return $ Left $ strMsg $ "runCoreRunIO: " ++ show e))
printModule :: EHCOpts -> Mod -> PP_Doc
printModule = ppMod'