Hi all,<div><br></div><div>I have recently tried to replicate some examples from in the articles about type families but found some possible bugs.</div>
<div><br></div><div>In [2], the example</div><div><br></div><div><span style="font-style:italic">class C a where</span></div><div>
<span style="font-style:italic">&nbsp;&nbsp; &nbsp;type S a (k :: * -&gt; *) :: *</span></div><div><span style="font-style:italic">instance C [a] where</span></div><div><span style="font-style:italic">&nbsp;&nbsp; &nbsp;type S [a] k = (a,k a)</span></div>

<div><br></div><div>does not compile under the claim that the type variable k is not in scope.</div><div><br></div><div>However, if we extract the type family from the class</div><div><br>
</div><div><div><span style="font-style:italic">type family S a (k :: * -&gt; *) :: *</span></div><div><span style="font-style:italic">type instance S [a] k = (a, k a)</span></div>
<div><span style="font-style:italic">class C a</span></div><div><br></div><div>it compiles correctly.</div><div>According to [3], the difference is purely syntactic sugar, does that mean that both examples should compile and behave the same or is there some subtlety that justifies the class example not to compile?</div>

<div><br></div><div>Another issue is that data kinds (used in both [2] and [3]) do not seem to be supported at all by the compiler, are they already implemented in GHC?</div><div><br>
</div><div>Simple examples such as</div><div><br></div><div><span style="font-style:italic">datakind Nat = Zero</span></div><div>or</div><div><span style="font-style:italic">datakind Nat = Zero | Succ Nat</span></div>
<div><br></div><div>fail to compile.</div><div><div><div><br></div></div></div></div><div>Perhaps some of these should be submitted to the GHC Bug Tracker. I have tested both GHC 6.8.2 and 6.9.20080218.</div>
<div><br></div><div><br></div><div>References:</div><span style="font-family:Helvetica;font-size:16px"><ol><li><a href="http://www.cse.unsw.edu.au/~chak/papers/CKPM05.html" title="http://www.cse.unsw.edu.au/~chak/papers/CKPM05.html" rel="nofollow" style="text-decoration:none;border-top-style:none;border-right-style:none;border-left-style:none;border-width:initial;border-color:initial;color:rgb(90, 54, 150);border-bottom-width:1px;border-bottom-style:dashed;border-bottom-color:rgb(221, 221, 221)" target="_blank"><span style="font-size:small">Associated Types with Class.</span></a><span style="font-size:small">&nbsp;Manuel M. T. Chakravarty, Gabriele Keller, Simon Peyton Jones, and Simon Marlow. In&nbsp;</span><i><span style="font-size:small">Proceedings of The 32nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL&#39;05)</span></i><span style="font-size:small">, pages 1-13, ACM Press, 2005.<br>

</span></li><li><a href="http://www.cse.unsw.edu.au/~chak/papers/CKP05.html" title="http://www.cse.unsw.edu.au/~chak/papers/CKP05.html" rel="nofollow" style="text-decoration:none;border-top-style:none;border-right-style:none;border-left-style:none;border-width:initial;border-color:initial;color:rgb(51, 102, 187);border-bottom-width:1px;border-bottom-style:dashed;border-bottom-color:rgb(221, 221, 221)" target="_blank"><span style="font-size:small">Associated Type Synonyms.</span></a><span style="font-size:small">&nbsp;Manuel M. T. Chakravarty, Gabriele Keller, and Simon Peyton Jones. In&nbsp;</span><i><span style="font-size:small">Proceedings of The Tenth ACM SIGPLAN International Conference on Functional Programming</span></i><span style="font-size:small">, ACM Press, pages 241-253, 2005.</span></li>

<li><a href="http://www.cse.unsw.edu.au/~chak/papers/SSPC07.html" title="http://www.cse.unsw.edu.au/~chak/papers/SSPC07.html" rel="nofollow" style="text-decoration:none;border-top-style:none;border-right-style:none;border-left-style:none;border-width:initial;border-color:initial;color:rgb(51, 102, 187);border-bottom-width:1px;border-bottom-style:dashed;border-bottom-color:rgb(221, 221, 221)" target="_blank"><span style="font-size:small">Towards Open Type Functions for Haskell.</span></a><span style="font-size:small">&nbsp;Tom Schrijvers, Martin Sulzmann, Simon Peyton-Jones, and Manuel M. T. Chakravarty. Unpublished manuscript, 2007.</span><br>

</li></ol></span>