[GHC] #13403: Derive instances (Applicative, Monad, ...) for structures lifted over functors

GHC ghc-devs at haskell.org
Thu Mar 9 18:43:42 UTC 2017


#13403: Derive instances (Applicative, Monad, ...) for structures lifted over
functors
-------------------------------------+-------------------------------------
        Reporter:  Iceland_jack      |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by RyanGlScott):

 This feels extremely //ad hoc// and not nearly formalized enough to where
 I'd be comfortable with it. One nice thing about `deriving` is that it
 tends to work with ~90% of the datatypes you'd use regularly, but with
 this proposal, it feels closer to <50%.

 I have no idea how you could teach GHC to recognize "product types" in a
 way that's uniform and comprehensive. What happens when there are more
 than two fields? What happens when you have arbitrary nestings of types
 like `data Product f g h a = Product (f (g (f a))) (h (f (g a)))`? What if
 there are constants like `data Product a = Product Int a`?

 But I'm even more concerned about what this proposed feature would do on
 things that //aren't// of the particular form that you've labeled "product
 types". What happens with:

 * `newtype Compose f g a = Compose (f (g a))`
 * `data Proxy a = Proxy`

 and so on? What would the error messages be like in cases where it
 wouldn't work?

 I'm quite skeptical that this could be made workable. -1 from me.

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


More information about the ghc-tickets mailing list