<div class="gmail_quote">2011/12/29 Manfred Lotz <span dir="ltr"><<a href="mailto:manfred.lotz@arcor.de">manfred.lotz@arcor.de</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi there,<br>
might be trivial but anyway.<br>
<br>
I have a usage of 'any' and 'all' but I only have a predicate<br>
p :: a -> IO Bool.<br>
<br>
I wrote my own functons for this:<br>
<br>
<br>
mor :: Monad m => [m Bool] -> m Bool<br>
mor = liftM or . sequence<br>
<br>
mand :: Monad m => [m Bool] -> m Bool<br>
mand = liftM and . sequence<br>
<br>
or' :: Monad m => ( a -> m Bool) -> [a] -> [m Bool]<br>
or' _ [] = []<br>
or' p (x:xs) = p x : or' p xs<br>
<br>
and' :: Monad m => ( a -> m Bool) -> [a] -> [m Bool]<br>
and' _ [] = []<br>
and' p (x:xs) = p x : and' p xs<br>
<br>
myany :: Monad m => (a -> m Bool) -> [a] -> m Bool<br>
myany p = mor . or' p<br>
<br>
myall :: Monad m => (a -> m Bool) -> [a] -> m Bool<br>
myall p = mand . and' p<br>
<br>
<br>
which seems to do what I want.<br>
<br>
<br>
Question: Is there any libray function I could use to do this?<br>
<font color="#888888"><br>
<br>
--<br>
Thanks,<br>
Manfred<br>
</font></blockquote><div> <br>Hi Manfred,<br></div></div><br>have a look here: <a href="http://hackage.haskell.org/packages/archive/monad-loops/latest/doc/html/Control-Monad-Loops.html#v:allM">http://hackage.haskell.org/packages/archive/monad-loops/latest/doc/html/Control-Monad-Loops.html#v:allM</a><br>
<br>Regards Tim<br><br><br>