
#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 shachaf): You expect that the `Foldable` instance for `data T2 a = (a ~ Int) => MkT2 Int` give you the `Int` because there happens to be an `Int` equality constraint? That seems pretty unintuitive to me. What about e.g. `data E = E Int`, and `data A a = A E` vs. `data A a = (a ~ Int) => A E`, and then inlining E? I think Simon's examples are worth thinking about, and derived `Foldable` instances in the presence of equality constraints need some more justification. It's true that `Foldable` is the wild west of type classes, so parametricity doesn't give us the right answer like for `Functor`, but I don't expect it to just look for types that happen to be equal. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10447#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler