Thanks, that&#39;s clearer to me now.<br><br>It confirmed my thoughts:<br>&gt; Matching the pattern <span class="cmmi-10">con</span><span class="cmmi-10"> pat</span> against a value, where <span class="cmmi-10">con</span> is a constructor defined by <span class="pcrr7t-">newtype</span>, depends on the
     value:<br>&gt; - If the value is of the form <span class="cmmi-10">con</span><span class="cmmi-10"> v</span>, then <span class="cmmi-10">pat</span> is matched against <span class="cmmi-10">v</span>.<br>&gt; - If the value is <span class="cmsy-10">⊥</span>, then <span class="cmmi-10">pat</span> is matched against <span class="cmsy-10">⊥</span>.<br>

<br>Put shorter:<br><span style="font-family:courier new,monospace">newtype TestN = TestN Int</span><br style="font-family:courier new,monospace"><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">TestN x = undefined</span><br>

<br>Then x = undefined.<br><br>Which means you cannot make a boxed type out of un unboxed one using newtype. That makes sense.<br><br><div class="gmail_quote">2012/1/22 Roman Cheplyaka <span dir="ltr">&lt;<a href="mailto:roma@ro-che.info">roma@ro-che.info</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">* Yves Parès &lt;<a href="mailto:yves.pares@gmail.com">yves.pares@gmail.com</a>&gt; [2012-01-22 11:32:30+0100]<br>
<div class="im">&gt; These make me think that pattern matching against a newtype is always lazy<br>
&gt; (irrefutable). Am I right?<br>
<br>
</div>Yes.<br>
<div class="im"><br>
&gt; Is there some litterature expliciting in a less empiric way than I did the<br>
&gt; differences like this between data and newtype? I&#39;ve never come against<br>
&gt; such documentation through all my learning of Haskell, yet I think it&#39;s an<br>
&gt; important point.<br>
<br>
</div>See the Haskell report, section <a href="tel:3.17.2" value="+333172">3.17.2</a> &quot;Informal Semantics of Pattern<br>
Matching&quot; [1].<br>
<br>
In particular, this paragraph:<br>
<br>
    The irrefutable patterns are as follows: a variable, a wildcard, N<br>
    apat where N is a constructor defined by newtype and apat is<br>
    irrefutable (see Section 4.2.3), var@apat where apat is irrefutable,<br>
    or of the form ~apat (whether or not apat is irrefutable). All other<br>
    patterns are refutable.<br>
<br>
[1]: <a href="http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-600003.17.2" target="_blank">http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-600003.17.2</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Roman I. Cheplyaka :: <a href="http://ro-che.info/" target="_blank">http://ro-che.info/</a><br>
</font></span></blockquote></div><br>