<p dir="ltr">mergeWithKey is a rather difficult bit of API from a user perspective. I wish it didn't exist. I'm not looking to remove it, but I don't think its availability is a great argument against something more user-friendly.</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Aug 7, 2016 12:33 AM, "Oleg Grenrus" <<a href="mailto:oleg.grenrus@iki.fi">oleg.grenrus@iki.fi</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">-1 on unionWithMapping/Key. There is already mergeWithKey (and there’s pull request to `these` to use it, I’d just hadn’t time to look it thru properly and apply).<br>
<br>
- Oleg Grenrus (co-maintainer of these)<br>
<br>
> On 07 Aug 2016, at 06:15, David Feuer <<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>> wrote:<br>
><br>
> Cale Gibbard and Ryan Trinkle are interested in adding some more<br>
> operations they say will be useful in their work. Note that<br>
> unionWithMapping is intended to enable an efficient implementation of<br>
> alignWith in Data.Align in the `these` package.<br>
><br>
> Set:<br>
><br>
> filterIncreasing :: Ord a => (a -> Bool) -> Set a -> Set a<br>
> filterDecreasing :: Ord a => (a -> Bool) -> Set a -> Set a<br>
> partitionIncreasing :: Ord a => (a -> Bool) -> Set a -> (Set a, Set a)<br>
><br>
> Map:<br>
><br>
> filterKeysIncreasing :: Ord k => (k -> Bool) -> Map k a -> Map k a<br>
> filterKeysDecreasing :: Ord k => (k -> Bool) -> Map k a -> Map k a<br>
> partitionKeysIncreasing :: Ord k => (k -> Bool) -> Map k a -> (Map k a, Map k a)<br>
><br>
> traverseMaybe :: Applicative f => (a -> f (Maybe b)) -> Map k a -> f (Map k b)<br>
><br>
> alterMany :: Ord k => (a -> Maybe b -> Maybe b) -> Map k a -> Map k b -> Map k b<br>
><br>
> alterManyA :: (Applicative f, Ord k) => (a -> Maybe b -> f (Maybe b))<br>
> -> Map k a -> Map k b -> f (Map k b)<br>
><br>
> unionWithMapping :: Ord k => (a -> c) -> (b -> c) -> (a -> b -> c) -><br>
> Map k a -> Map k b -> Map k c<br>
><br>
> unionWithKeyMapping :: Ord k => (k -> a -> c) -> (k -> b -> c) -> (k<br>
> -> a -> b -> c)<br>
> -> Map k a -> Map k b -> Map k c<br>
> ______________________________<wbr>_________________<br>
> Libraries mailing list<br>
> <a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/libraries</a><br>
<br>
</blockquote></div></div>