Hi Simon,<br><br>I think the polykinded stuff is now ready to merge. A few issues remain:<br><br>1) dynamic004 fails when run without optimisation (it times out). This is potentially<br>worrying. It&#39;s doing a comparison of the typeReps of nested lists, up to 1000 nested<br>

lists. This worked fine before with -O0, but not anymore. With -O1 it works fine, though.<br>Hopefully it&#39;s ok to just run this test with optimisation only, and assume that no one should<br>expect great performance of Typeable on huge types with -O0...<br>

<br>2) With -XAutoDeriveTypeable, if you also derive Typeable instances in the module, you&#39;ll<br>get a &quot;duplicate instances&quot; error. I think you&#39;d rather have this be a warning, so that the<br>semantics if -XAutoDeriveTypeable would be &quot;derive Typeable for types/classes for which<br>

Typeable is not yet derived&quot;, instead of &quot;derive Typeable for all types/classes declared&quot;. But<br>I found this a bit tricky to check for, and as such haven&#39;t implemented it yet. I can point you<br>to the place in the code where this is happening.<br>

<br>3) I don&#39;t know where to put `data Proxy t = Proxy`. I kind of need it for defining things in<br>the library, but it doesn&#39;t need to be exported to the user, as we now have<br>`typeRep :: forall proxy. proxy a -&gt; TypeRep`. I do export it from Data.Typeable.Internal,<br>

because I want to use it in Data.Typeable, but I don&#39;t re-export it from Data.Typeable.<br>This is, in principle, all fine, but I think that the Proxy datatype is so commonplace that<br>it should probably be defined in GHC somewhere, so that it doesn&#39;t start showing up repeated<br>

in all sorts of libraries. Perhaps we can just put it in GHC.Exts?<br><br>Either way, I&#39;d like to merge this to the master branch now, and deal with the issues<br>above after that. This is because it&#39;s tiresome to keep my branch up-to-date with<br>

master, and I don&#39;t think the remaining issues are blocking, or will affect the stability<br>of the master branch. <br><br>Regarding documentation, I&#39;ve updated the user&#39;s guide to mention the new behaviour of Typeable,<br>

the fact that you can&#39;t define instances by hand, and the new flags (-XAutoDeriveTypeable<br>and -fwarn-typeable-instances). I&#39;ve written a blog post in the past about the new features<br>(<a href="http://hauptwerk.blogspot.co.uk/2012/11/coming-soon-in-ghc-head-poly-kinded.html">http://hauptwerk.blogspot.co.uk/2012/11/coming-soon-in-ghc-head-poly-kinded.html</a>), and I&#39;ll<br>

write another one about how to make sure your old Typeable code works in the new version.<br><br>If you want to have a look at the code before merging, let me know, and I&#39;ll update the<br>new-typeable branch. (I&#39;ve stopped working on that branch, and now I have a local branch <br>

ready for merging with a single commit to master).<br><br><br>Cheers,<br>Pedro<br><br>