Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • GHC GHC
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 4,826
    • Issues 4,826
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 447
    • Merge requests 447
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Glasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #9980

Closed
Open
Created Jan 13, 2015 by Simon Peyton Jones@simonpjDeveloper

TcS monad is too heavy

The typechecker'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 fixingpattern-matchoverlapchecking) 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?

Edited Mar 10, 2019 by Simon Peyton Jones
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking