<!doctype html public "-//W3C//DTD W3 HTML//EN">
<html><head><style type="text/css"><!--
blockquote, dl, ul, ol, li { padding-top: 0 ; padding-bottom: 0 }
 --></style><title>Re: [clean-list] uniqueness
question</title></head><body>
<div><br></div>
<div>Carlos Aya wrote:</div>
<blockquote type="cite" cite>Does anyone know why the following type
signature is invalid?<br>
<br>
second :: *a .a -&gt; *a<br>
second x y = x<br>
<br>
I am getting this message</blockquote>
<blockquote type="cite" cite>Error [matrices.icl,12,second]: a
inconsistently attributed (4)</blockquote>
<div><br></div>
<div>The same uniqueness attribute must be used for all occurrences
of</div>
<div>a type variable in a function type.</div>
<div><br></div>
<blockquote type="cite" cite>I came across this trying to type a more
complex function with arrays, but it boils down to signature
above.<br>
</blockquote>
<blockquote type="cite" cite>Why the uniqueness attribute has to be
the same for two independent parameters that just happen to have the
same type?</blockquote>
<div><br></div>
<div>A type '*a' cannot be coerced to 'a', because 'a' could be a
partial</div>
<div>application with a unique argument. It this were allowed the
unique</div>
<div>argument could be used more than once. Because the opposite
coercion</div>
<div>(from 'a' to '*a') is also not possible, the compiler requires
that</div>
<div>all occurences of a type variable have the same uniqueness
attribute</div>
<div>(as mentioned above).</div>
<div><br></div>
<div>This is explained in section &quot;Higher-Order Uniqueness Types&quot;
(page 18) of:</div>
<div><br></div>
<div><font face="Trebuchet MS" size="+2" color="#000000">Barendsen,
Erik and Smetsers, Sjaak.&nbsp;</font><font face="Trebuchet MS"
size="+2" color="#CC9900"> Uniqueness&nbsp; typing for functional
languages&nbsp; with graph rewriting semantics</font><font
face="Trebuchet MS" size="+2" color="#000000">, In Mathematical&nbsp;
Structures in Computer Science 6, pp. 579-612. (</font><font
face="Trebuchet MS" size="+2" color="#CC9900">abstract</font><font
face="Trebuchet MS" size="+2" color="#000000">,&nbsp;</font><font
face="Trebuchet MS" size="+2" color="#CC9900"> pdf
version</font><font face="Trebuchet MS" size="+2"
color="#000000">)</font></div>
<div><br></div>
<div>http://www.st.cs.ru.nl/papers/1996/bare96-uniclosed.pdf</div>
<div><br></div>
<div>Kind regards,</div>
<div><br></div>
<div>John van Groningen</div>
</body>
</html>