
#9183: GHC shouldn't expand constraint synonyms -------------------------------------+------------------------------------ Reporter: Feuerbach | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by Feuerbach): I just assumed this can be similar to how ghc doesn't expand ordinary type synonyms unless necessary, but from what you're saying it sounds like it's different for constraints? An even more important feature would be to preserve the synonym names in type errors. That'd allow to make such errors more domain-specific and informative, while an expanded version is very complex and essentially reveals a lot of internal details of the library. Would it make sense to have something like {{{ newtype MyConstraint (a :: *) = MyConstraint (Show a, Eq a, Num a) :: Constraint }}} or {{{ data MyConstraint (a :: *) = MyConstraint (Show a) (Eq a) (Num a) :: Constraint }}} that wouldn't expand automatically? Just like we can improve the quality of error messages in ordinary Haskell by replacing type synonyms with newtypes or data types? (I don't have a clear vision of how this should work; this is just an idea.) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9183#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler