[GHC] #15931: MonoLocalBinds + MonomorphismRestriction prevents generalization for a top level definition

GHC ghc-devs at haskell.org
Wed Nov 21 20:12:25 UTC 2018


#15931: MonoLocalBinds + MonomorphismRestriction prevents generalization for a top
level definition
-------------------------------------+-------------------------------------
           Reporter:  theindigamer   |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  low            |         Milestone:  ⊥
          Component:  Compiler       |           Version:  8.6.2
           Keywords:                 |  Operating System:  Unknown/Multiple
  MonoLocalBinds,                    |
  MonomorphismRestriction            |
       Architecture:                 |   Type of failure:  Incorrect
  Unknown/Multiple                   |  error/warning at compile-time
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Consider the following code sample

 {{{#!haskell
 {-# LANGUAGE MonoLocalBinds #-}
 {-# LANGUAGE MonomorphismRestriction #-}
 tmp = 10
 picker x y = if tmp > 11 then x else y
 main = do
   print (picker "x" "y")
   print (picker 10 11)
 }}}

 It fails with the misleading error message "* No instance for (Num [Char])
 arising from the literal `10'...", from what seems to be an interaction
 between MonoLocalBinds and MonomorphismRestriction (turn either off and
 the error goes away).

 Should this be happening only for local bindings, or is it correct for
 this error to occur for top-level definitions too?

 In either case, would it be possible to give a better error message here?

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15931>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list