Skip to content
Andy Gill edited this page Jul 17, 2015 · 6 revisions

The layers in HERMIT are

  • Shell
  • Plugin (PluginState, PluginReader):
  • Kernel: raw rewrites or queries on Core; keeps a dictionary of all rewrite results.

Shell

Plugin

data PluginState = PluginState
    { ps_cursor         :: AST                                      -- ^ the current AST
    , ps_pretty         :: PrettyPrinter                            -- ^ which pretty printer to use
    , ps_render         :: Handle -> PrettyOptions -> Either String DocH -> IO () -- ^ the way of outputing to the screen
    , ps_tick           :: TVar (M.Map String Int)                  -- ^ the list of ticked messages
    , ps_corelint       :: Bool                                     -- ^ if true, run Core Lint on module after each rewrite
    }

data PluginReader = PluginReader
    { pr_kernel         :: Kernel
    , pr_pass           :: PassInfo
    }

Kernel

Clone this wiki locally