<br><div><span class="gmail_quote">On 9/11/07, <b class="gmail_sendername">PR Stanley</b> &lt;<a href="mailto:prstanley@ntlworld.com">prstanley@ntlworld.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi<br>take 1000 [1..3] still yields [1,2,3]<br>I thought it was supposed to return an error.<br>Any ideas?<br>Thanks, Paul</blockquote><div><br>If for some reason you want a version that does return an error in that situation, you could do something like the following:
<br><br>take&#39; n _ | (n &lt;= 0) = []<br>take&#39; n [] | (n &gt; 0) = error &quot;take&#39;: list too short&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | otherwise = []<br>take&#39; n (x:xs) = x : take&#39; (n-1) xs<br></div><br>I&#39;m not sure why you&#39;d want that, though.&nbsp; The standard implementation gracefully handles all inputs, and usually turns out to be what you want.&nbsp; Really, if I were you, instead of making a version take&#39; as above, I would just use the standard take but check for the length of the list in the places where it matters.
<br><br>-Brent</div>