| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
HERMIT.Dictionary.FixPoint
Contents
- externals :: [External]
- fixIntroR :: (AddBindings c, BoundVars c, ExtendPath c Crumb, HasEmptyContext c, ReadBindings c, ReadPath c Crumb, HasHermitMEnv m, HasHscEnv m, MonadCatch m, MonadIO m, MonadThings m, MonadUnique m) => Rewrite c m Core
- fixIntroNonRecR :: (AddBindings c, BoundVars c, ExtendPath c Crumb, HasEmptyContext c, ReadBindings c, ReadPath c Crumb, HasHermitMEnv m, HasHscEnv m, MonadCatch m, MonadIO m, MonadThings m, MonadUnique m) => Rewrite c m CoreBind
- fixIntroRecR :: (AddBindings c, BoundVars c, ExtendPath c Crumb, HasEmptyContext c, ReadBindings c, ReadPath c Crumb, HasHermitMEnv m, HasHscEnv m, MonadCatch m, MonadIO m, MonadThings m, MonadUnique m) => Rewrite c m CoreDef
- fixComputationRuleBR :: BiRewriteH CoreExpr
- fixRollingRuleBR :: BiRewriteH CoreExpr
- fixFusionRuleBR :: Maybe (EqualityProof HermitC HermitM) -> Maybe (RewriteH CoreExpr) -> CoreExpr -> CoreExpr -> CoreExpr -> BiRewriteH CoreExpr
- isFixExprT :: TransformH CoreExpr (Type, CoreExpr)
Operations on the Fixed Point Operator (fix)
Rewrites and BiRewrites on Fixed Points
fixIntroR :: (AddBindings c, BoundVars c, ExtendPath c Crumb, HasEmptyContext c, ReadBindings c, ReadPath c Crumb, HasHermitMEnv m, HasHscEnv m, MonadCatch m, MonadIO m, MonadThings m, MonadUnique m) => Rewrite c m Core Source
fixIntroNonRecR :: (AddBindings c, BoundVars c, ExtendPath c Crumb, HasEmptyContext c, ReadBindings c, ReadPath c Crumb, HasHermitMEnv m, HasHscEnv m, MonadCatch m, MonadIO m, MonadThings m, MonadUnique m) => Rewrite c m CoreBind Source
fixIntroRecR :: (AddBindings c, BoundVars c, ExtendPath c Crumb, HasEmptyContext c, ReadBindings c, ReadPath c Crumb, HasHermitMEnv m, HasHscEnv m, MonadCatch m, MonadIO m, MonadThings m, MonadUnique m) => Rewrite c m CoreDef Source
f = e ==> f = fix (\ f -> e)
fixComputationRuleBR :: BiRewriteH CoreExpr Source
fix ty f <==> f (fix ty f)
fixRollingRuleBR :: BiRewriteH CoreExpr Source
fix tyA (\ a -> f (g a)) <==> f (fix tyB (\ b -> g (f b))
fixFusionRuleBR :: Maybe (EqualityProof HermitC HermitM) -> Maybe (RewriteH CoreExpr) -> CoreExpr -> CoreExpr -> CoreExpr -> BiRewriteH CoreExpr Source
If f is strict, then (f (g a) == h (f a)) ==> (f (fix g) == fix h)
Utilities
isFixExprT :: TransformH CoreExpr (Type, CoreExpr) Source
Check that the expression has the form "fix t (f :: t -> t)", returning "t" and "f".