[GHC] #9980: TcS monad is too heavy
GHC
ghc-devs at haskell.org
Tue Jan 13 14:03:46 UTC 2015
#9980: TcS monad is too heavy
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.4
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple | Blocked By:
Test Case: | Related Tickets:
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
The typehcecker's constraint-solving monad, `TcS`, is simply built on top
of `TcM`, but it doesn't use most of `TcM`'s facilities. That was fine
while `TcS` was only called from the typechecker, but now (as part of
[wiki:PatternMatchCheck fixing pattern-match overlap checking]) we invoke
it from the desugarer.
It seems quite wrong to construct a vast, and unnecessary `TcM` context
just to invoke `TcS`.
Better: make `TcS` into its own monad, with its own `TcSLclEnv`, built on
`IOEnv` like the others.
Main objection: the plugins mechanism exposes `unsafeTcPluginTcM`, which
would become unavailable. But it it used?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9980>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list