Let me be more specific. Whereas we can get intuition for Foldable from

    toList :: t a -> [a]

we get intuition for Bifoldable from the hypothetical

    toEitherList :: t a b -> [Either a b]

This seems quite reasonable for some types.

    data Loost a b
      = Nool
      | Corns b (Loost a b)
      | Colns a (Loost a b)

But for something like

    newtype Plist a b
      = PNil
      | PCons a b (PList a b)

it feels awfully strange. Independent parts of the structure just get lumped together.

On Sat, May 30, 2020, 8:33 PM David Feuer <david.feuer@gmail.com> wrote:
Let me take that back. I forgot how weird Bifoldable and Bitraversable are for product types and product-like types. Is this instance actually useful for anything, or is it mostly confusing?

On Mon, Apr 13, 2020, 9:46 PM David Feuer <david.feuer@gmail.com> wrote:
I would go as far as to say we don't need to continue the proposal process here. We're doing it.

On Mon, Apr 13, 2020, 9:44 PM David Feuer <david.feuer@gmail.com> wrote:
This seems eminently reasonable to me. We must also be sure to add one to Data.HashMap if that's missing too.

On Mon, Apr 13, 2020, 9:36 PM Joseph C. Sible <josephcsible@gmail.com> wrote:
I'd like to propose a change to the containers package: adding a
Bifoldable instance to Map. I briefly mentioned this on Reddit [1] and
no obvious problems were brought up. I submitted a PR implementing it
[2]. This seems like an obvious and straightforward instance to me.
Thoughts?

Joseph C. Sible

[1]: https://old.reddit.com/r/haskell/comments/fsgqd6/monthly_hask_anything_april_2020/fn90d6k/
[2]: https://github.com/haskell/containers/pull/714
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries