You can also use lazy pattern matching.<br><br><a href="http://en.wikibooks.org/wiki/Haskell/Laziness#Lazy_pattern_matching">http://en.wikibooks.org/wiki/Haskell/Laziness#Lazy_pattern_matching</a><br><br><div class="gmail_quote">

On 16 April 2012 15:21, Lorenzo Bolla <span dir="ltr">&lt;<a href="mailto:lbolla@gmail.com">lbolla@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">&gt; splitAt&#39;    :: Int -&gt; [a] -&gt; ([a], [a])<br>
&gt; splitAt&#39; n  = foldr (\x <font color="#cc0000">~</font>(z1, z2) -&gt; if fst x &lt;= n then  (snd x : z1, z2)<br>
&gt;                                       else              ([], snd x : z2))<br>
&gt;                     ([], [])<br>
&gt;                     . zip [1..]</div></blockquote></div><br>
<div>Ozgur</div><div><br></div>