<div dir="ltr">ok guys .. what is this &quot;phantom type&quot; concept? Is it a type theory thing or just Haskell type concept?<br><br>Vasili<br><br><div class="gmail_quote">On Mon, Jul 28, 2008 at 8:53 PM, Bryan Donlan <span dir="ltr">&lt;<a href="mailto:bd@fushizen.net">bd@fushizen.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">On Mon, Jul 28, 2008 at 08:48:23PM -0500, Galchin, Vasili wrote:<br>
&gt; what does a datatype with no constructors mean?<br>
&gt;<br>
&gt; E.g.<br>
&gt;<br>
&gt; data RSAStruct<br>
&gt; data EVP_PKEY<br>
&gt; data EVP_CIPHER<br>
&gt; data EVP_CIPHER_CTX<br>
&gt; data EVP_MD_CTX<br>
&gt; data EVP_MD<br>
&gt; data BIGNUM<br>
<br>
</div>It&#39;s simply a datatype that can never have a value - a so-called<br>
&#39;phantom type&#39;. They&#39;re useful when you need a type (eg as the argument<br>
for a ForeignPointer) but no need for an actual value.<br>
<br>
You can of course create values of these types using &#39;undefined&#39;,<br>
&#39;error&#39; and friends, but this is perhaps not very useful most of the<br>
time :)<br>
</blockquote></div><br></div>