<div><span class="gmail_quote">On 12/30/07, <b class="gmail_sendername">Cristian Baboi</b> <<a href="mailto:cristi@ot.onrc.ro">cristi@ot.onrc.ro</a>> 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 -> String<br><br>ppp This = ""
<br>ppp (S x) = 'S':(ppp x)<br><br><br>How can I prevent one to pass 'let x = S x in x' to ppp ?</blockquote>
<div> </div>
<div>
<div>{-# LANGUAGE GADTs, EmptyDataDecls #-}</div>
<div>data Z</div>
<div>data S a</div>
<div> </div>
<div>data Something a where</div>
<div> This :: Something Z</div>
<div> S :: Something a -> Something (S a)</div>
<div> </div>
<div>ppp :: Something a -> String</div>
<div>ppp This = ""</div>
<div>ppp (S x) = 'S' : ppp x</div></div></div>