ghc-7.8.3: The GHC API

Safe HaskellNone
LanguageHaskell98

InteractiveEval

Synopsis

Documentation

data RunResult Source

Constructors

RunOk [Name]

names bound by this evaluation

RunException SomeException

statement raised an exception

RunBreak ThreadId [Name] (Maybe BreakInfo) 

data Status Source

Constructors

Break Bool HValue BreakInfo ThreadId

the computation hit a breakpoint (Bool = was an exception)

Complete (Either SomeException [HValue])

the computation completed with either an exception or a value

runStmt :: GhcMonad m => String -> SingleStep -> m RunResult Source

Run a statement in the current interactive context. Statement may bind multple values.

runStmtWithLocation :: GhcMonad m => String -> Int -> String -> SingleStep -> m RunResult Source

Run a statement in the current interactive context. Passing debug information Statement may bind multple values.

setContext :: GhcMonad m => [InteractiveImport] -> m () Source

Set the interactive evaluation context.

(setContext imports) sets the ic_imports field (which in turn determines what is in scope at the prompt) to imports, and constructs the ic_rn_glb_env environment to reflect it.

We retain in scope all the things defined at the prompt, and kept in ic_tythings. (Indeed, they shadow stuff from ic_imports.)

getContext :: GhcMonad m => m [InteractiveImport] Source

Get the interactive evaluation context, consisting of a pair of the set of modules from which we take the full top-level scope, and the set of modules from which we take just the exports respectively.

getNamesInScope :: GhcMonad m => m [Name] Source

Returns all names in scope in the current interactive context

moduleIsInterpreted :: GhcMonad m => Module -> m Bool Source

Returns True if the specified module is interpreted, and hence has its full top-level scope available.

getInfo :: GhcMonad m => Bool -> Name -> m (Maybe (TyThing, Fixity, [ClsInst], [FamInst])) Source

Looks up an identifier in the current interactive context (for :info) Filter the instances by the ones whose tycons (or clases resp) are in scope (qualified or otherwise). Otherwise we list a whole lot too many! The exact choice of which ones to show, and which to hide, is a judgement call. (see Trac #1581)

exprType :: GhcMonad m => String -> m Type Source

Get the type of an expression Returns its most general type

typeKind :: GhcMonad m => Bool -> String -> m (Type, Kind) Source

Get the kind of a type

parseName :: GhcMonad m => String -> m [Name] Source

Parses a string as an identifier, and returns the list of Names that the identifier can refer to in the current interactive context.

data Term Source

Constructors

Term 

Fields

ty :: RttiType
 
dc :: Either String DataCon
 
val :: HValue
 
subTerms :: [Term]
 
Prim 

Fields

ty :: RttiType
 
value :: [Word]
 
Suspension 

Fields

ctype :: ClosureType
 
ty :: RttiType
 
val :: HValue
 
bound_to :: Maybe Name
 
NewtypeWrap 

Fields

ty :: RttiType
 
dc :: Either String DataCon
 
wrapped_term :: Term
 
RefWrap 

Fields

ty :: RttiType
 
wrapped_term :: Term
 

Instances