mapM_ for bytestring
Artyom Kazak
yom at artyom.me
Sun Sep 1 21:42:55 CEST 2013
On Sun, 01 Sep 2013 23:27:20 +0400, Henning Thielemann
<lemming at henning-thielemann.de> wrote:
>
> On Sun, 1 Sep 2013, Artyom Kazak wrote:
>
>> On Sun, 01 Sep 2013 22:55:10 +0400, Henning Thielemann
>> <lemming at henning-thielemann.de> wrote:
>>
>>> A possible solution might be fusion rules for ByteString.unpack and
>>> mapM_.
>>
>> Except that such rules would require a hand-written version of mapM_
>> anyway.
>>
>> I agree that it can be written, it’s just that I don’t see why it
>> should be
>> in some obscure place instead of Data.ByteString.
>
> This rule should of course be part of Data.ByteString. RULES are similar
> to class instances and like orphan instances, orphan rules are a bad
> idea.
It still doesn’t solve the problem quite like adding mapM_ does. Rules
aren’t documented anywhere; why would the programmer expect `mapM_ .
unpack` to fuse?
Moreover, it violates the existing structure of bytestring package. For
instance, functions like `last` and `maximum` could be implemented as
rules in the same way, but they’re included in Data.ByteString (for good,
I’d say).
More information about the Libraries
mailing list