| ghc-6.10.4: The GHC API | Contents | Index
RtClosureInspect
Synopsis
cvObtainTerm :: HscEnv -> Int -> Bool -> RttiType -> HValue -> IO Term
cvReconstructType :: HscEnv -> Int -> GhciType -> HValue -> IO (Maybe Type)
improveRTTIType :: HscEnv -> RttiType -> RttiType -> IO (Maybe TvSubst)
data Term
= Term {
ty :: RttiType
dc :: Either String DataCon
val :: HValue
subTerms :: [Term]
}
| Prim {
ty :: RttiType
value :: [Word]
}
| Suspension {
ctype :: ClosureType
ty :: RttiType
val :: HValue
bound_to :: Maybe Name
}
| NewtypeWrap {
ty :: RttiType
dc :: Either String DataCon
wrapped_term :: Term
}
| RefWrap {
ty :: RttiType
wrapped_term :: Term
}
isTerm :: Term -> Bool
isSuspension :: Term -> Bool
isPrim :: Term -> Bool
isFun :: Term -> Bool
isFunLike :: Term -> Bool
isNewtypeWrap :: Term -> Bool
isFullyEvaluated :: a -> IO Bool
isFullyEvaluatedTerm :: Term -> Bool
termType :: Term -> RttiType
mapTermType :: (RttiType -> Type) -> Term -> Term
termTyVars :: Term -> TyVarSet
foldTerm :: TermFold a -> Term -> a
data TermFold a = TermFold {
fTerm :: TermProcessor a a
fPrim :: RttiType -> [Word] -> a
fSuspension :: ClosureType -> RttiType -> HValue -> Maybe Name -> a
fNewtypeWrap :: RttiType -> Either String DataCon -> a -> a
fRefWrap :: RttiType -> a -> a
}
foldTermM :: Monad m => TermFoldM m a -> Term -> m a
data TermFoldM m a = TermFoldM {
fTermM :: TermProcessor a (m a)
fPrimM :: RttiType -> [Word] -> m a
fSuspensionM :: ClosureType -> RttiType -> HValue -> Maybe Name -> m a
fNewtypeWrapM :: RttiType -> Either String DataCon -> a -> m a
fRefWrapM :: RttiType -> a -> m a
}
idTermFold :: TermFold Term
pprTerm :: TermPrinter -> TermPrinter
cPprTerm :: Monad m => CustomTermPrinter m -> Term -> m SDoc
cPprTermBase :: Monad m => CustomTermPrinter m
type CustomTermPrinter m = TermPrinterM m -> [Precedence -> Term -> m (Maybe SDoc)]
data Closure = Closure {
tipe :: ClosureType
infoPtr :: Ptr ()
infoTable :: StgInfoTable
ptrs :: Array Int HValue
nonPtrs :: [Word]
}
getClosureData :: a -> IO Closure
data ClosureType
= Constr
| Fun
| Thunk Int
| ThunkSelector
| Blackhole
| AP
| PAP
| Indirection Int
| MutVar Int
| MVar Int
| Other Int
isConstr :: ClosureType -> Bool
isIndirection :: ClosureType -> Bool
sigmaType :: Type -> Type
Documentation
cvObtainTerm :: HscEnv -> Int -> Bool -> RttiType -> HValue -> IO Term
cvReconstructType :: HscEnv -> Int -> GhciType -> HValue -> IO (Maybe Type)
improveRTTIType :: HscEnv -> RttiType -> RttiType -> IO (Maybe TvSubst)
data Term
Constructors
Term |
ty :: RttiType |
dc :: Either String DataCon |
val :: HValue |
subTerms :: [Term] |
Prim |
ty :: RttiType |
value :: [Word] |
Suspension |
ctype :: ClosureType |
ty :: RttiType |
val :: HValue |
bound_to :: Maybe Name |
NewtypeWrap |
ty :: RttiType |
dc :: Either String DataCon |
wrapped_term :: Term |
RefWrap |
ty :: RttiType |
wrapped_term :: Term |
Instances
Outputable Term
isTerm :: Term -> Bool
isSuspension :: Term -> Bool
isPrim :: Term -> Bool
isFun :: Term -> Bool
isFunLike :: Term -> Bool
isNewtypeWrap :: Term -> Bool
isFullyEvaluated :: a -> IO Bool
isFullyEvaluatedTerm :: Term -> Bool
termType :: Term -> RttiType
mapTermType :: (RttiType -> Type) -> Term -> Term
termTyVars :: Term -> TyVarSet
foldTerm :: TermFold a -> Term -> a
data TermFold a
Constructors
TermFold |
fTerm :: TermProcessor a a |
fPrim :: RttiType -> [Word] -> a |
fSuspension :: ClosureType -> RttiType -> HValue -> Maybe Name -> a |
fNewtypeWrap :: RttiType -> Either String DataCon -> a -> a |
fRefWrap :: RttiType -> a -> a |
foldTermM :: Monad m => TermFoldM m a -> Term -> m a
data TermFoldM m a
Constructors
TermFoldM |
fTermM :: TermProcessor a (m a) |
fPrimM :: RttiType -> [Word] -> m a |
fSuspensionM :: ClosureType -> RttiType -> HValue -> Maybe Name -> m a |
fNewtypeWrapM :: RttiType -> Either String DataCon -> a -> m a |
fRefWrapM :: RttiType -> a -> m a |
idTermFold :: TermFold Term
pprTerm :: TermPrinter -> TermPrinter
cPprTerm :: Monad m => CustomTermPrinter m -> Term -> m SDoc
Takes a list of custom printers with a explicit recursion knot and a term, and returns the output of the first succesful printer, or the default printer
cPprTermBase :: Monad m => CustomTermPrinter m
type CustomTermPrinter m = TermPrinterM m -> [Precedence -> Term -> m (Maybe SDoc)]
data Closure
Constructors
Closure |
tipe :: ClosureType |
infoPtr :: Ptr () |
infoTable :: StgInfoTable |
ptrs :: Array Int HValue |
nonPtrs :: [Word] |
getClosureData :: a -> IO Closure
data ClosureType
Constructors
Constr |
Fun |
Thunk Int |
ThunkSelector |
Blackhole |
AP |
PAP |
Indirection Int |
MutVar Int |
MVar Int |
Other Int |
Instances
Eq ClosureType
Show ClosureType
Outputable ClosureType
isConstr :: ClosureType -> Bool
isIndirection :: ClosureType -> Bool
sigmaType :: Type -> Type
Produced by Haddock version 2.4.2