<div><span class="gmail_quote">On 12/30/07, <b class="gmail_sendername">Cristian Baboi</b> &lt;<a href="mailto:cristi@ot.onrc.ro">cristi@ot.onrc.ro</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Thank you.<br><br>data Something = This | S Something<br><br>ppp :: Something -&gt; String<br><br>ppp This = &quot;&quot;
<br>ppp (S x) = &#39;S&#39;:(ppp x)<br><br><br>How can I prevent one to pass&nbsp;&nbsp;&#39;let x = S x in x&#39; to ppp ?</blockquote>
<div>&nbsp;</div>
<div>
<div>{-# LANGUAGE GADTs, EmptyDataDecls #-}</div>
<div>data Z</div>
<div>data S a</div>
<div>&nbsp;</div>
<div>data Something a where</div>
<div>&nbsp;&nbsp;&nbsp; This :: Something Z</div>
<div>&nbsp;&nbsp;&nbsp; S :: Something a -&gt; Something (S a)</div>
<div>&nbsp;</div>
<div>ppp ::&nbsp;Something a -&gt; String</div>
<div>ppp This = &nbsp;&quot;&quot;</div>
<div>ppp (S x) = &#39;S&#39; : ppp x</div></div></div>