mapM_ for bytestring

Artyom Kazak yom at
Sun Sep 1 21:42:55 CEST 2013

On Sun, 01 Sep 2013 23:27:20 +0400, Henning Thielemann  
<lemming at> wrote:

> On Sun, 1 Sep 2013, Artyom Kazak wrote:
>> On Sun, 01 Sep 2013 22:55:10 +0400, Henning Thielemann  
>> <lemming at> 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