Re: [GHC] #7102: Type family instance overlap accepted in ghci

I suspect the purging in (2) can already be achieved by just redeclaring
#7102: Type family instance overlap accepted in ghci -------------------------------------+------------------------------------- Reporter: exbb2 | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.4.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC accepts | Unknown/Multiple invalid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by simonpj): Eek. Of course GHCi should do an eager instance-overlap check when loading modules, just as GHC does. That is a serious bug. Again, nothign to do with Safe Haskell; your example works just as well without `{-# LANGUAGE Safe #-}`. Would anyone like to look at it? The code is all there, since it is used for dealing with imports in GHC. the type family, after which new instances would refer to the new entity. Ah yes, that is true. Clever. So this is what would happen {{{ Prelude> type family T a b Prelude> type instance T a b = a Prelude> let uc :: a -> T a b; uc = id Prelude> type instance T a b = b ERROR: instance overlap -- User thinks: darn! Re-declare T Prelude> type family T a b -- This is a brand-new T, unrelated to the old one Prelude> uc 'a' :: Int <interactive>:6:1: error: Couldn't match type ‘Char’ with ‘Int’ Expected type: Int Actual type: Ghci1.T Char b0 }}} So, no need to add a new facility for purging. What we need is to reject overlap. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/7102#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC