Hi guys,<br><br>I have found a bug on the compiler (at least ghc &gt;6.8.2). For some module (yes, the example does nothing at all):<br><br><i>module Test where<br><br>data Type a where<br>&nbsp;&nbsp;&nbsp; Func :: Type a -&gt; Type b -&gt; Type (a -&gt; b)<br>
&nbsp;&nbsp;&nbsp; PF :: Type a -&gt; Type (PF a)<br><br>data PF a where<br>&nbsp;&nbsp;&nbsp; ID :: PF (a -&gt; a)<br><br>test :: Type a -&gt; a -&gt; a<br>test (PF (Func _ _)) ID = ID</i><br><br>I get the impossible:<br><br><i>$ ghci Test.hs -fglasgow-exts<br>
GHCi, version 6.9.20080303: <a href="http://www.haskell.org/ghc/">http://www.haskell.org/ghc/</a>&nbsp; :? for help<br>Loading package base ... linking ... done.<br>[1 of 1] Compiling Test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( Test.hs, interpreted )<br>
ghc-6.9.20080303: panic! (the &#39;impossible&#39; happened)<br>&nbsp; (GHC version 6.9.20080303 for i386-apple-darwin):<br>&nbsp;&nbsp;&nbsp; Coercion.splitCoercionKindOf<br>&nbsp;&nbsp;&nbsp; $co${tc aog} [tv]<br>&nbsp;&nbsp;&nbsp; &lt;pred&gt;t_ao8{tv} [tau] ~ a{tv aob} [sk] -&gt; a{tv aob} [sk]<br>
Please report this as a GHC bug:&nbsp; <a href="http://www.haskell.org/ghc/reportabug">http://www.haskell.org/ghc/reportabug</a></i><br><br>However, the following implementations of <i>test</i> compile ok:<br><br><i>test :: Type a -&gt; a -&gt; a<br>
test (PF _) ID = ID<br><br>test :: Type a -&gt; a -&gt; a<br>test (PF (Func _ _)) x = x</i><br><br>It has something to do with mixing different GADTs contructors.<br><br>Should this be submitted as a bug as it is?<br><br>
Cheers,<br>hugo<br>