Not exactly what you asked for, but...
filter (uncurry somePredicate) $ (,) <$> list1 <*> list2
does the job.
Using only applicative operations, it's impossible to affect the 'shape' of the result--this is the difference in power between applicative and monad.
-- ryan
Hi Haskellers,Suppose I have two list and I want to calculatethe cartesian product between the two of them,constrained to a predicate.In List comprehension notation is justresult = [ (x, y) | x <- list1, y <-list2, somePredicate x y ]or in monadic notationresult = dox <- list1y <- list2guard (somePredicate x y)return $ (x,y)Then I was wondering if we can do something similar using an applicative styleresult = (,) <$> list1 <*> list2 (somePredicate ???)The question is then,there is a way for defining a guard in applicative Style?Thanks in advance,Felipe Zapata.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe