[Haskell-cafe] [announcement] filtrable: class of filtrable containers
Sean Leather
sean.leather at gmail.com
Wed Feb 17 08:50:13 UTC 2016
Hi Joachim,
On Wed, Feb 17, 2016 at 10:32 AM, Joachim Breitner wrote:
> Am Dienstag, den 16.02.2016, 23:02 -0800 schrieb M Farkas-Dyck:
> > I quietly posted this library to Hackage nearly a year ago, but lately
> > learned that some seeking such a package had difficulty finding it, so
> > i announce it now ☺
> >
> > https://hackage.haskell.org/package/filtrable
> >
> > class Functor f => Filtrable f where
> > mapMaybe :: (a -> Maybe b) -> f a -> f b
> > catMaybes :: f (Maybe a) -> f a
> > filter :: (a -> Bool) -> f a -> f a
> >
> > For laws, see docs on Hackage.
>
> You might want to add laws in the style of
>
> If this is also a Foldable, then
> toList . mapMaybe f = mapMapybe f . toList
> toList . catMaybes = catMaybes . toList
> toList . filter f = filter f . toList
>
> which would fix the behavior quite tightly.
>
Why would you specify laws for Filtrable w.r.t. Foldable, when Foldable is
not part of the definition?
There is at least one potential application for Filtrable for a type that
isn't a Foldable:
https://github.com/reflex-frp/reflex/pull/44
Regards,
Sean
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160217/f715ab53/attachment.html>
More information about the Haskell-Cafe
mailing list