HORIZON HASKELLDocslts/ghc-10.0.xaa25b892026-10-10Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · aa25b89 · 2026-10-10

Moduleghc-10.0.0.20260917GHC2024

GHC.Driver.Env.Types

  • 2 types
  • 1 class
newtypenewtype Hsc a
#

The Hsc monad: Passing an environment and diagnostic state

Instances10Monad, Functor, Applicative, MonadIO, MonadCatch, MonadMask, …
  • Monad HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • Functor HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • Applicative HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • MonadIO HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • MonadCatch HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • MonadMask HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • MonadThrow HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • HasLogger HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • HasDynFlags HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
  • HasHscEnv HscDefined in ghc-10.0.0.20260917 · GHC.Driver.Env.Types
datadata HscEnv
#

HscEnv is like Session, except that some of the fields are immutable. An HscEnv is used to compile a single module from plain Haskell source code (after preprocessing) to either C, assembly or C--. It's also used to store the dynamic linker state to allow for multiple linkers in the same address space. Things like the module graph don't change during a single compilation.

Historical note: "hsc" used to be the name of the compiler binary, when there was a separate driver and compiler. To compile a single module, the driver would invoke hsc on the source code... so nowadays we think of hsc as the layer of the compiler that deals with compiling a single module.

Constructors

Instances2ContainsDynFlags, HasHscEnv