This can be given exactly the same implementation as the one for lists:
filterM :: (Applicative f) => (a -> f Bool) -> Seq a -> f (Seq a)
filterM p = foldr go (pure empty)
where
go x r = f <$> p x <*> r
where
f flg ys = if flg then x <| ys else ys
Bikeshed all you like over the name.
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries