The linked paper appears to show the right style.<div><br></div><div>This appears to satisfy the conditions, however:</div><div><br></div><div><div>inTwain as = let (x,y,_) = foldr (\a (r,s,t) -&gt; case (t) of {b:(b&#39;:bs) -&gt; (r,a:s,bs); _ -&gt; (a:r,s,t)}) ([],[],as) as in (x,y)</div>
<div><br></div><div>In the case of a list of odd length, the first half is given the extra element.</div><div><br><br><div class="gmail_quote">On Thu, Jun 4, 2009 at 8:22 AM, Martijn van Steenbergen <span dir="ltr">&lt;<a href="mailto:martijn@van.steenbergen.nl">martijn@van.steenbergen.nl</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Bonjour café,<br>
<br>
A small puzzle:<br>
<br>
Consider the function inTwain that splits a list of even length evenly into two sublists:<br>
<br>
&gt; inTwain &quot;Hello world!&quot;<br>
(&quot;Hello &quot;,&quot;world!&quot;)<br>
<br>
Is it possible to implement inTwain such that the recursion is done by one of the standard list folds?<br>
<br>
Is there a general way to tell if a problem can be expressed as a fold?<br>
<br>
Thank you,<br>
<br>
Martijn.<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br></div></div>