<br><div><span class="gmail_quote">On 8/11/07, <b class="gmail_sendername">Per Vognsen</b> &lt;<a href="mailto:per.vognsen@gmail.com">per.vognsen@gmail.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;">
Applicative functors can indeed help:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;(,,,) &lt;$&gt; [1,2,3] &lt;*&gt; [-1,0,1] &lt;*&gt; [1,1,1] &lt;*&gt; [0,2,6]<br><br>You just use n-1 commas when you want the effect of zipn.</blockquote><div><br>Actually, that&#39;s not quite right, since that uses the applicative functor related to the list monad (so you get a list of 4-tuples of all possible combinations, rather than a 4-way zip).&nbsp; To get the zip behavior, you need to add a ZipList constructor in front of all the lists, and then apply getZipList at the end to extract.
<br><br>-Brent<br></div></div>