| 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