Deprecate Foldable for Either

Edward Kmett ekmett at gmail.com
Thu Mar 2 19:29:28 UTC 2017


Sadly, doing so in Data.List would lead to massive breakage as Data.List is
specified by the report and is very, very widely imported unqualified just
to get at things like sort.

-Edward

On Thu, Mar 2, 2017 at 2:28 PM, David Feuer <david.feuer at gmail.com> wrote:

> Yes. That is an excellent plan. I'd love to call it Data.List, but others
> will disagree.
>
> On Mar 2, 2017 2:17 PM, "Andreas Abel" <andreas.abel at ifi.lmu.de> wrote:
>
>> We could have a module
>>
>>   Data.List.ReallyJustListsAndNotSomeThingMoreGeneric
>>
>> which implements concat and friends just for lists and could be imported
>> if one wants to have the list operations.  Currently,
>>
>>   import qualified Data.List as List
>>
>> does not give on the list operations as e.g.
>>
>>   List.concat
>>
>> but the generic ones.
>>
>> See also http://ghc.haskell.org/trac/ghc/ticket/13345
>>
>> On 02.03.2017 20:02, Edward Kmett wrote:
>>
>>>
>>> On Thu, Mar 2, 2017 at 11:59 AM, Andreas Abel <andreas.abel at ifi.lmu.de
>>> <mailto:andreas.abel at ifi.lmu.de>> wrote:
>>>
>>>     Ok, Foldable is a formal condition for Traversable, but not actually
>>>     used in the implementation of Traversable Either.  This still leaves
>>>     room to implement Foldable for Either by
>>>
>>>       instance Foldable (Either a) where
>>>         foldMap _ _ = error "Folding Either?  Naah, I don't think this
>>>     is a good idea."
>>>
>>>
>>> This would change the semantic of every
>>>
>>> forM_ myeither $ \i -> ....
>>>
>>> in existing code to silent errors.
>>>
>>> Hell no.
>>>
>>> -Edward
>>>
>>>
>>>     On 02.03.2017 17:48, David Feuer wrote:
>>>
>>>         The problem is that we'd then lose the perfectly good Traversable
>>>         instance, which would be sad.
>>>
>>>         On Mar 2, 2017 11:23 AM, "Andreas Abel" <andreas.abel at ifi.lmu.de
>>>         <mailto:andreas.abel at ifi.lmu.de>
>>>         <mailto:andreas.abel at ifi.lmu.de
>>>         <mailto:andreas.abel at ifi.lmu.de>>> wrote:
>>>
>>>             Today a student came to me wondering why a certain function
>>>         produced
>>>             a regular result, where he had expected an error.  Turned
>>>         out he had
>>>             used `concat`, but not on a lists of lists as he had
>>>         thought, but on
>>>             a lists of `Either a [b]`.
>>>
>>>             With the Foldable instance for Either, which considers
>>>         Either a b to
>>>             be a container of 0-1 elements of b, errors are happily
>>>         swallowed.
>>>
>>>             I think this instance is harmful and should be deprecated
>>>         (and later
>>>             removed) from base.
>>>
>>>             There are similarly pointless Foldable instances as well.
>>>
>>>             See a discussion one year ago, which was heated, but had no
>>>             consequences.
>>>
>>>
>>>         https://mail.haskell.org/pipermail/libraries/2016-February/0
>>> 26678.html
>>>         <https://mail.haskell.org/pipermail/libraries/2016-February/
>>> 026678.html>
>>>
>>>         <https://mail.haskell.org/pipermail/libraries/2016-February/
>>> 026678.html
>>>         <https://mail.haskell.org/pipermail/libraries/2016-February/
>>> 026678.html>>
>>>
>>>
>>>             --
>>>             Andreas Abel  <><      Du bist der geliebte Mensch.
>>>
>>>             Department of Computer Science and Engineering
>>>             Chalmers and Gothenburg University, Sweden
>>>
>>>             andreas.abel at gu.se <mailto:andreas.abel at gu.se>
>>>         <mailto:andreas.abel at gu.se <mailto:andreas.abel at gu.se>>
>>>             http://www.cse.chalmers.se/~abela/
>>>         <http://www.cse.chalmers.se/~abela/>
>>>         <http://www.cse.chalmers.se/~abela/
>>>         <http://www.cse.chalmers.se/~abela/>>
>>>             _______________________________________________
>>>             Libraries mailing list
>>>             Libraries at haskell.org <mailto:Libraries at haskell.org>
>>>         <mailto:Libraries at haskell.org <mailto:Libraries at haskell.org>>
>>>             http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>         <http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries>
>>>             <http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>         <http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries>>
>>>
>>>
>>>
>>>     --
>>>     Andreas Abel  <><      Du bist der geliebte Mensch.
>>>
>>>     Department of Computer Science and Engineering
>>>     Chalmers and Gothenburg University, Sweden
>>>
>>>     andreas.abel at gu.se <mailto:andreas.abel at gu.se>
>>>     http://www.cse.chalmers.se/~abela/ <http://www.cse.chalmers.se/~a
>>> bela/>
>>>     _______________________________________________
>>>     Libraries mailing list
>>>     Libraries at haskell.org <mailto:Libraries at haskell.org>
>>>     http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>>     <http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries>
>>>
>>>
>>>
>>
>> --
>> Andreas Abel  <><      Du bist der geliebte Mensch.
>>
>> Department of Computer Science and Engineering
>> Chalmers and Gothenburg University, Sweden
>>
>> andreas.abel at gu.se
>> http://www.cse.chalmers.se/~abela/
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20170302/4885cc39/attachment-0001.html>


More information about the Libraries mailing list