Fwd: [GHC] #7704: Phantom types break new polykind Typeable with either StandaloneDeriving or AutoDeriveTypeable

José Pedro Magalhães jpm at cs.uu.nl
Tue Feb 19 11:04:04 CET 2013


Hi Simon,

How should an instance of Typeable for a polykinded tycon look like? E.g.
if we have

data Proxy (a :: k) = Proxy
-- Proxy :: forall (k :: BOX). k -> *

I suppose we want an instance

forall k. instance Typeable (k -> *) (Proxy k)

Right? So the universally quantified kind variables of the tycon should end
up universally
quantified in the instance as well. How does this translate to the ds_tvs,
ds_tys, and
ds_tc_args arguments of a DerivSpec?...


Thanks,
Pedro

---------- Forwarded message ----------
From: GHC <cvs-ghc at haskell.org>
Date: Mon, Feb 18, 2013 at 8:42 PM
Subject: [GHC] #7704: Phantom types break new polykind Typeable with either
StandaloneDeriving or AutoDeriveTypeable
To:
Cc: ghc-tickets at haskell.org


#7704: Phantom types break new polykind Typeable with either
StandaloneDeriving or
AutoDeriveTypeable
-----------------------------+----------------------------------------------
Reporter:  nwf               |          Owner:
    Type:  bug               |         Status:  new
Priority:  normal            |      Component:  Compiler
 Version:  7.7               |       Keywords:
      Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
 Failure:  None/Unknown      |      Blockedby:
Blocking:                    |        Related:
-----------------------------+----------------------------------------------
 This test program, reduced from an attempt to bring ekmett's tagged
 package to HEAD,
 {{{
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE AutoDeriveTypeable #-}

 newtype Tagged s b = Tagged { unTagged :: b }
 }}}
 results in
 {{{
 GHCi, version 7.7.20130218: http://www.haskell.org/ghc/  :? for help
 Loading package ghc-prim ... linking ... done.
 Loading package integer-gmp ... linking ... done.
 Loading package base ... linking ... done.
 [1 of 1] Compiling Main             ( typeable.hs, interpreted )

 typeable.hs:5:1:
     Derived typeable instance must be of form (Typeable Tagged)
     In the stand-alone deriving instance for
       `Data.Typeable.Internal.Typeable Tagged'
 }}}

 This message is also emitted if I replace `AutoDeriveTypeable`
 `StandaloneDeriving` and `deriving instance Typeable Tagged`.

 However, a "deriving (Typeable)" clause on the newtype definition works
 just fine.

--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7704>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
ghc-tickets mailing list
ghc-tickets at haskell.org
http://www.haskell.org/mailman/listinfo/ghc-tickets
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20130219/00358936/attachment-0001.htm>


More information about the ghc-devs mailing list