Non-derivable Typeable

I need to declare a Typeable instance for a type which has an argument of kind * -> *. GHC refuses to derive it. What is a recommended way to go about it? In particular, if I write the instance by hand, how important is the fingerprint, and how could I generate it? Roman

Won't it derive it with StandaloneDeriving?
Cheers,
Pedro
On Tue, Jan 22, 2013 at 1:28 PM, Roman Cheplyaka
I need to declare a Typeable instance for a type which has an argument of kind * -> *. GHC refuses to derive it.
What is a recommended way to go about it?
In particular, if I write the instance by hand, how important is the fingerprint, and how could I generate it?
Roman
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

It doesn't seem to — am I doing something wrong?
GHCi, version 7.6.1.20121207: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :set -XDeriveDataTypeable -XStandaloneDeriving
Prelude> :m +Data.Typeable
Prelude Data.Typeable> data Foo m = Foo (m ())
Prelude Data.Typeable> deriving instance Typeable1 m => Typeable (Foo m)
<interactive>:5:1:
Can't make a derived instance of `Typeable (Foo m)':
`Foo' must only have arguments of kind `*'
In the stand-alone deriving instance for
`Typeable1 m => Typeable (Foo m)'
Roman
* José Pedro Magalhães
Won't it derive it with StandaloneDeriving?
Cheers, Pedro
On Tue, Jan 22, 2013 at 1:28 PM, Roman Cheplyaka
wrote: I need to declare a Typeable instance for a type which has an argument of kind * -> *. GHC refuses to derive it.
What is a recommended way to go about it?
In particular, if I write the instance by hand, how important is the fingerprint, and how could I generate it?
Roman
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

I just found mkTyCon3 which generates the fingerprint automatically.
(I was looking at Data.Typeable.Internal.mkTyCon before.)
That answers my question.
(Of course, a way to derive the instance would be even better...)
Roman
* Roman Cheplyaka
I need to declare a Typeable instance for a type which has an argument of kind * -> *. GHC refuses to derive it.
What is a recommended way to go about it?
In particular, if I write the instance by hand, how important is the fingerprint, and how could I generate it?
Roman

Yes, that will work. But soon we'll have poly-kinded Typeable in HEAD,
which will be able to derive that instance.
Cheers,
Pedro
On Tue, Jan 22, 2013 at 2:34 PM, Roman Cheplyaka
I just found mkTyCon3 which generates the fingerprint automatically. (I was looking at Data.Typeable.Internal.mkTyCon before.) That answers my question.
(Of course, a way to derive the instance would be even better...)
Roman
* Roman Cheplyaka
[2013-01-22 15:28:55+0200] I need to declare a Typeable instance for a type which has an argument of kind * -> *. GHC refuses to derive it.
What is a recommended way to go about it?
In particular, if I write the instance by hand, how important is the fingerprint, and how could I generate it?
Roman
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Thanks, looking forward to it!
Roman
* José Pedro Magalhães
Yes, that will work. But soon we'll have poly-kinded Typeable in HEAD, which will be able to derive that instance.
Cheers, Pedro
On Tue, Jan 22, 2013 at 2:34 PM, Roman Cheplyaka
wrote: I just found mkTyCon3 which generates the fingerprint automatically. (I was looking at Data.Typeable.Internal.mkTyCon before.) That answers my question.
(Of course, a way to derive the instance would be even better...)
Roman
* Roman Cheplyaka
[2013-01-22 15:28:55+0200] I need to declare a Typeable instance for a type which has an argument of kind * -> *. GHC refuses to derive it.
What is a recommended way to go about it?
In particular, if I write the instance by hand, how important is the fingerprint, and how could I generate it?
Roman
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (2)
-
José Pedro Magalhães
-
Roman Cheplyaka