[GHC] #13785: Cannot pacify -Wmonomorphism-restriction with nested pattern bindings
#13785: Cannot pacify -Wmonomorphism-restriction with nested pattern bindings -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 (Type checker) | Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: Poor/confusing Unknown/Multiple | error message Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- I originally observed this issue in the `parsers` library. Here's a minimal example: {{{#!hs {-# LANGUAGE ScopedTypeVariables #-} {-# OPTIONS_GHC -Wmonomorphism-restriction #-} module Bug where class Monad m => C m where c :: (m Char, m Char) foo :: forall m. C m => m Char foo = bar >> baz where (bar, baz) = c }}} If you compile this with a GHC that supports `-Wmonomorphism-restriction` (GHC 8.0.1 or later), it'll rightfully give this warning: {{{ [1 of 1] Compiling Bug ( Bug.hs, interpreted ) Bug.hs:11:5: warning: [-Wmonomorphism-restriction] • The Monomorphism Restriction applies to the bindings for ‘bar’, ‘baz’ Consider giving a type signature for these binders • In an equation for ‘foo’: foo = bar >> baz where (bar, baz) = c | 11 | (bar, baz) = c | ^^^^^^^^^^^^^^ }}} Naturally, I tried to squelch this warning by adding type signatures for `bar` and `baz`: {{{#!hs foo :: forall m. C m => m Char foo = bar >> baz where bar, baz :: m Char (bar, baz) = c }}} But GHC //still// warns! {{{ [1 of 1] Compiling Bug ( Bug.hs, interpreted ) Bug.hs:12:5: warning: [-Wmonomorphism-restriction] • The Monomorphism Restriction applies to the bindings for ‘bar’, ‘baz’ Consider giving a type signature for these binders • In an equation for ‘foo’: foo = bar >> baz where bar, baz :: m Char (bar, baz) = c | 12 | (bar, baz) = c | ^^^^^^^^^^^^^^ }}} And to make things even more absurd, GHC points out a chunk of code which //has// type signatures :) -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13785> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#13785: Cannot pacify -Wmonomorphism-restriction with nested pattern bindings -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.0.1 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Poor/confusing | Unknown/Multiple error message | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by Simon Peyton Jones <simonpj@…>): In [changeset:"a65dfea535ddf3ca6aa2380ad38cb60cf5c0f1d8/ghc" a65dfea5/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="a65dfea535ddf3ca6aa2380ad38cb60cf5c0f1d8" Make the MR warning more accurage Trac #13785 showed that we were emitting monomorphism warnings when we shouldn't. The fix turned out to be simple. In fact test T10935 then turned out to be another example of the over-noisy warning so I changed the test slightly. }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13785#comment:1> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#13785: Cannot pacify -Wmonomorphism-restriction with nested pattern bindings -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler (Type | Version: 8.0.1 checker) | Resolution: fixed | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Poor/confusing | Test Case: error message | typecheck/should_compile/T13785 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by simonpj): * status: new => closed * testcase: => typecheck/should_compile/T13785 * resolution: => fixed Comment: Ah yes, thank you. Fixed. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13785#comment:2> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
participants (1)
-
GHC