[GHC] #10300: GHC rejects

#10300: GHC rejects -------------------------------------+------------------------------------- Reporter: mhwombat | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: GHC rejects Unknown/Multiple | valid program Test Case: | Blocked By: Blocking: | Related Tickets: 10020 Differential Revisions: | -------------------------------------+------------------------------------- In GHC 7.8.4, the following code is legal: {{{ {-# LANGUAGE TypeFamilies, FlexibleContexts #-} class FiniteGrid g where type Size s size :: g -> Size g maxPossibleDistance :: g -> Int }}} But with GHC 7.10.1, it no longer compiles. The error message is: {{{ The associated type ‘Size’ mentions none of the type or kind variables of the class ‘FiniteGrid g’ In the class declaration for ‘FiniteGrid’ }}} I didn't see any mention of this in the migration guide, but perhaps there's another pragma I need to enable. I thought this might be related to https://ghc.haskell.org/trac/ghc/ticket/10020, but that bug is apparently fixed in GHC 7.10.1. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10300 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10300: GHC rejects typeclass with associated type -------------------------------------+------------------------------------- Reporter: mhwombat | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: 10020 | Differential Revisions: -------------------------------------+------------------------------------- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10300#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10300: GHC rejects typeclass with associated type -------------------------------------+------------------------------------- Reporter: mhwombat | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: invalid | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: 10020 | Differential Revisions: -------------------------------------+------------------------------------- Changes (by simonpj): * status: new => closed * resolution: => invalid Comment: There's nothing to connect `Size` with `FiniteGrid`; it's not an ''associated'' type at all. You can just define it separately: {{{ type family Size s class FiniteGrid g where size :: g -> Size g maxPossibleDistance :: g -> Int }}} Or, if you want to guarantee you always have an instance of `Size g` whenever you have an instance of `FiniteGrid g`, then use `g` in `Size`'s definition: {{{ class FiniteGrid g where type Size g size :: g -> Size g maxPossibleDistance :: g -> Int }}} This isn't a bug in 7.10; rather it was a bug in 7.8. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10300#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC