
#9980: TcS monad is too heavy -------------------------------------+------------------------------------- Reporter: simonpj | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.4 Resolution: | Keywords: | TypeCheckerPlugins Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by diatchki): I hand't seen this ticket until Adam updated it a couple of days ago. Is that still the plan? The main things I can think of that a plugin might want from `TcM` are: 1. access to variable "sort" (e.g., `isTouchableMetaVar`) 2. a way to lookup things in the environment so that a plugin can recognize the types it supposed to work with (e.g., a plugin might know that it wants to work on type `T` defined in module `X.Y.Z`, but it needs to lookup this type's `TyCon` so that it can recognize the type in a constraint). On the second point: it is probably better if a plugin looks up this information only once (on startup) and stores the info somewhere, rather than looking it up all the time. So we could probably change the plugin API to add some initialization in `TcM`, but then keep the actual plugin execution in `TcS`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9980#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler