Proposal: Add filterM or filterA to Data.Sequence

Artyom yom at artyom.me
Tue Dec 30 17:52:15 UTC 2014


I’m not sure I understand. Do you mean that |filterM| shouldn’t exist 
for data structures for which |filterM . toList| is as fast?

If this is the case, I wish that it was at least specified in the 
documentation that e.g. “this function doesn’t exist because the naive 
composition is guaranteed to be optimised away / the faster version is 
actually impossible to write / etc.”. I find myself wondering way too 
often whether some piece of code I’ve written is a potential candidate 
for optimisation, and knowing in advance that the naive version is the 
“recommended” approach lets me not waste my time on benchmarking code 
which was already benchmarked by others.

On 12/30/2014 08:05 PM, Johan Tibell wrote:

> We should check that `filterM . toList` isn't as fast. That was the 
> case for bytestring and we rejected adding filterM there for that reason.
>
> On Mon, Dec 29, 2014 at 6:13 AM, Edward Kmett <ekmett at gmail.com 
> <mailto:ekmett at gmail.com>> wrote:
>
>     +1 to just generalizing filterM in Data.Sequence
>
>     On Sun, Dec 28, 2014 at 12:22 AM, David Feuer
>     <david.feuer at gmail.com <mailto:david.feuer at gmail.com>> wrote:
>
>         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 <0.3927809241601645gt; 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 at haskell.org <mailto:Libraries at haskell.org>
>         http://www.haskell.org/mailman/listinfo/libraries
>
>
>
>     _______________________________________________
>     Libraries mailing list
>     Libraries at haskell.org <mailto:Libraries at haskell.org>
>     http://www.haskell.org/mailman/listinfo/libraries
>
>
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries


More information about the Libraries mailing list