Hi Andres,<br><br><div class="gmail_quote">2012/2/24 Andres Löh <span dir="ltr">&lt;<a href="mailto:andres.loeh@googlemail.com">andres.loeh@googlemail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

I don&#39;t understand what&#39;s going on here. Instances for V1 should of<br>
course be defined if they can be! And in this case, a V1 instance<br>
makes sense and should be defined. The definition itself doesn&#39;t<br>
matter, as it&#39;ll never be executed.<br></blockquote><div><br>The definition certainly matters:<br><br><blockquote style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;font-family:courier new,monospace" class="gmail_quote">

data Ze deriving Generic<br><br>class DeepSeq a where<br>  rnf :: a -&gt; ()<br>  default rnf :: (Generic a, GDeepSeq (Rep a)) =&gt; a -&gt; ()<br>  rnf = grnf . from<br><br>instance DeepSeq Ze<br><br>class GDeepSeq f where<br>

  grnf :: f a -&gt; ()<br><br>instance GDeepSeq V1 where<br>  grnf _ = ()<br><br>instance GDeepSeq a =&gt; GDeepSeq (M1 i c a) where<br>  grnf = grnf . unM1<br><br>-- other instances are not relevant now<br><br>t :: Ze<br>

t = undefined<br></blockquote><br><span style="font-family:courier new,monospace">seq t () == undefined</span>. <span style="font-family:courier new,monospace">rnf t == ()</span>, because the V1 instance dictates so.<br>
<br>
<br>Cheers,<br>Pedro<br><br></div></div><br>