<div dir="ltr">On Mon, Feb 8, 2016 at 2:36 PM, Wojtek Narczyński <span dir="ltr"><<a href="mailto:wojtek@power.com.pl" target="_blank">wojtek@power.com.pl</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear Devs,<br>
<br>
I've tried to ask this in the ($) thread, but it was totally offtopic there and I was ignored just as I deserved :-)<br>
<br>
Consider the following example.<br>
<br>
wojtek@Desktop2016:~/src/he$ cat kinds.hs<br>
{-# LANGUAGE DataKinds #-}<br>
{-# LANGUAGE KindSignatures #-}<br>
<br>
data K = A | B<br>
<br>
f :: (A :: K) -> (B :: K)<br>
f _ = undefined<br>
<br>
wojtek@Desktop2016:~/src/he$ /opt/ghc/head/bin/ghc kinds.hs<br>
[1 of 1] Compiling Main             ( kinds.hs, kinds.o )<br>
<br>
kinds.hs:6:6: error:<br>
    • Expected a type, but ‘'A’ has kind ‘K’<br>
    • In the type signature:<br>
        f :: (A :: K) -> (B :: K)<br>
<br>
kinds.hs:6:18: error:<br>
    • Expected a type, but ‘'B’ has kind ‘K’<br>
    • In the type signature:<br>
        f :: (A :: K) -> (B :: K)<br>
<br>
As Roman kindly (!) explained to me some time ago, GHC really means "Expected a type of kind '*' (or '#')..."<br>
<br>
Now that GHC is apparently undergoing a major overhaul of its internals, would it be possible to allow types of various kinds in functions? Would it make sense? May I file a ticket?<span class="HOEnZb"></span></blockquote><div><br></div><div>Normally the reason to define a function is so that you can apply it to something. But there are no values of the promoted type A to apply f to, aside from perhaps undefined. What would be the purpose of allowing this?<br><br></div><div>Regards,<br></div><div>Reid Barton <br></div></div></div></div>