[GHC] #5012: haskell 98 program does not typecheck when compiled with -XTypeFamilies

GHC cvs-ghc at haskell.org
Thu Mar 10 23:54:02 CET 2011


#5012: haskell 98 program does not typecheck when compiled with -XTypeFamilies
---------------------------------------+------------------------------------
 Reporter:  jcpetruzza                 |          Owner:                         
     Type:  bug                        |         Status:  closed                 
 Priority:  normal                     |      Component:  Compiler (Type checker)
  Version:  7.0.2                      |     Resolution:  invalid                
 Keywords:                             |       Testcase:                         
Blockedby:                             |             Os:  Unknown/Multiple       
 Blocking:                             |   Architecture:  Unknown/Multiple       
  Failure:  GHC rejects valid program  |  
---------------------------------------+------------------------------------
Changes (by HolgerReinhardt):

  * status:  new => closed
  * resolution:  => invalid


Comment:

 This is caused by a change in the type-checker in GHC 7:
 http://hackage.haskell.org/trac/ghc/blog/LetGeneralisationInGhc7

 This new behaviour gets triggered by activating Type families. The
 solution is to give explicit local type signatures:
 {{{
 {-# OPTIONS -XTypeFamilies -XRankNTypes -XScopedTypeVariables #-}


 f :: forall a m. Monad m => ([m a], [a]) -> m [a]
 f x = do
     a <- apply id     fst
     b <- apply return snd
     return (a ++ b)

  where
     apply :: forall b c. (b -> m c) -> (([m a], [a]) -> [b]) -> m [c]
     apply p r = mapM p (r x)
 }}}

 If you don't want to write the type signatures, you can just make "apply"
 a global function and pass in "x" as a parameter:
 {{{
 f x = do
     a <- apply x id     fst
     b <- apply x return snd
     return (a ++ b)

 apply x p r = mapM p (r x)
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5012#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the Glasgow-haskell-bugs mailing list