Not exactly what you asked for, but...<br><br>    filter (uncurry somePredicate) $ (,) &lt;$&gt; list1 &lt;*&gt; list2<br><br>does the job.<br><br>Using only applicative operations, it&#39;s impossible to affect the &#39;shape&#39; of the result--this is the difference in power between applicative and monad.<br>
<br>  -- ryan<br><br><br><div class="gmail_quote">On Wed, Sep 12, 2012 at 7:40 AM, felipe zapata <span dir="ltr">&lt;<a href="mailto:tifonzafel@gmail.com" target="_blank">tifonzafel@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">
Hi Haskellers,<div><br></div><div>Suppose I have two list and I want to calculate</div><div>the cartesian product between the two of them,</div><div>constrained to a predicate.</div><div>In List comprehension notation is just</div>

<div><br></div><div>result = [ (x, y) | x &lt;- list1, y &lt;-list2, somePredicate x y ]</div><div><br></div><div>or in monadic notation</div><div><br></div><div>result = do</div><div> x &lt;- list1 </div><div> y &lt;- list2</div>

<div> guard (somePredicate x y)</div><div>return $ (x,y)</div><div><br></div><div>Then I was wondering if we can do something similar using an applicative style</div><div><br></div><div>result = (,) &lt;$&gt; list1 &lt;*&gt; list2 (somePredicate ???)</div>

<div><br></div><div>The question is then, </div><div>there is a way for defining a guard in applicative Style? </div><div><br></div><div>Thanks in advance,</div><div><br></div><div>Felipe Zapata.</div><div><br></div><div>

<br></div>
<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">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>
<br></blockquote></div><br>