
#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 simonpj): This is interesting, but I lack the bandwidth to follow it in detail. I urge against a design that requires the programmer to predict the behaviour of the constraint solver in order to decide what code the "deriving" will generate. I think it's be much better to say that it depends on the syntactic form of the declaration. So for `MkT1` and `MkT3` you'd get the first argument included in the fold, but for `MkT2` you would not. You need to think what to do about cases like this: {{{ data S a where MKS :: b -> c -> S (b,c) }}} Perhaps y'all can work out a design, document it on a wiki page, and even implement it. (I can advise.) I'd really love the same page to document the behaviour of deriving for `Functor` and `Traversable` too! Many thanks Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10447#comment:15 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler