[GHC] #10447: DeriveFoldable rejects instances with constraints in last argument of data type

GHC ghc-devs at haskell.org
Tue Jun 2 14:12:24 UTC 2015


#10447: DeriveFoldable rejects instances with constraints in last argument of data
type
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                   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:  #8678             |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by RyanGlScott):

 OK, I can live with that. That way, I can derive {{{Foldable}}} for any
 GADT and still fold over all the terms that have types equal to the last
 type parameter (up to rewriting {{{Con :: PlainTy -> PlainTy -> ... ->
 GADT PlainTy}}} as {{{Con :: a ~ PlainTy => a -> a -> ... -> GADT a}}}).

 I'm not the original author of the
 {{{DeriveFunctor/Foldable/Traversable}}} extensions, but I'd be willing to
 help write a wiki article on how they currently work (and how
 {{{DeriveFoldable}}} will eventually work). Is there a good template
 article from which I could adapt? All I know about the {{{deriving}}}
 algorithms is what I gleaned from
 [http://git.haskell.org/ghc.git/blob/9f968e97a0de9c2509da00f6337b612dd72a0389:/compiler/typecheck/TcDeriv.hs#l1331
 comments] in
 [http://git.haskell.org/ghc.git/blob/9f968e97a0de9c2509da00f6337b612dd72a0389:/compiler/typecheck/TcDeriv.hs#l1425
 TcDeriv.hs],
 [http://git.haskell.org/ghc.git/blob/9f968e97a0de9c2509da00f6337b612dd72a0389:/compiler/typecheck/TcGenDeriv.hs#l1476
 as] well
 [http://git.haskell.org/ghc.git/blob/9f968e97a0de9c2509da00f6337b612dd72a0389:/compiler/typecheck/TcGenDeriv.hs#l1725
 as] from
 [http://git.haskell.org/ghc.git/blob/9f968e97a0de9c2509da00f6337b612dd72a0389:/compiler/typecheck/TcGenDeriv.hs#l1800
 TcGenDeriv.hs], but they may be too formal for wiki purposes.

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


More information about the ghc-tickets mailing list