Discussion: Allow custom constraint for elem in Foldable

Carter Schonwald carter.schonwald at gmail.com
Fri Jul 28 00:25:12 UTC 2017


agreed.

this needs to be tested out in a user space lib first.


On Thu, Jul 27, 2017 at 7:35 PM, Eric Mertens <emertens at gmail.com> wrote:

> I would prefer to see designs for something like this explored in a
> separate package before we worried about changing base’s Foldable class.
>
> > On Jul 27, 2017, at 3:45 PM, David Feuer <david.feuer at gmail.com> wrote:
> >
> > The Foldable class offers the method
> >
> >  elem :: Eq a => a -> t a -> Bool
> >
> > Unfortunately, this is really awful for sets, hash maps, etc. See
> > https://stackoverflow.com/questions/45361801/implement-
> an-olog-n-foldable-elem-for-binary-search-trees-in-haskell#45362110
> > for an example. We could fix it, kinda:
> >
> > class Foldable t where
> >  type ElemConstr t :: * -> Constraint
> >  type ElemConstr t = Eq
> >
> >  elem :: ElemConstr t a => a -> t a -> Bool
> >  default elem :: (ElemConstr t ~ Eq, Eq a) => a -> t a -> Bool
> >
> > One might legitimately complain that such a wild type is ad hoc, but
> > one might counter that complaint by saying that most of Foldable is
> > already ad hoc.
> >
> > David
> > _______________________________________________
> > Libraries mailing list
> > Libraries at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20170727/6918517f/attachment.html>


More information about the Libraries mailing list