Hi,<br><br><div class="gmail_quote">2012/2/23 Maxime Henrion <span dir="ltr">&lt;<a href="mailto:mhenrion@gmail.com">mhenrion@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div class="im"><br>
&gt; * Why do you have the instance:<br>
&gt;<br>
&gt; instance GDeepSeq V1 where grnf _ = ()<br>
&gt;<br>
&gt; The only way to construct values of a void type is using ⊥. And I<br>
&gt; would expect that rnf ⊥ = ⊥, not (). I think the best thing is to just<br>
&gt; remove the V1 instance.<br>
<br>
</div>This would have the consequence that any type tagged with a phantom type<br>
(for whatever reason) couldn&#39;t be used with deepseq, it would return<br>
bottom. What if I want to deepseq a 2-3 finger tree tagged with a<br>
type-level natural that ensures the proper shape of the tree statically?<br>
It seemed to me that I should be able to do that; this is why I added<br>
this V1 instance.<br></blockquote><div><br>I&#39;m not sure I understand your comment... V1 should only be used for datatypes without constructors, such as `data Empty`.<br><br><br>Cheers,<br>Pedro<br></div></div><br>