<div dir="ltr"><div><a id="gmail-v:deleteBy" class="gmail-def">I've suffered from inconvenience due to the restricted type signature. I'll be very glad if such restrictions are lifted:<br></a></div><div><a id="gmail-v:deleteBy" class="gmail-def"><br></a></div><div><a id="gmail-v:deleteBy" class="gmail-def">deleteBy</a> :: (a -> b -> <a href="http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Bool.html#t:Bool" title="Data.Bool">Bool</a>) -> a -> [b] -> [b]</div><div><a id="gmail-v:deleteFirstsBy" class="gmail-def">deleteFirstsBy</a> :: (a -> b -> <a href="http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Bool.html#t:Bool" title="Data.Bool">Bool</a>) -> [a] -> [b] -> [b]</div><div><a id="gmail-v:intersectBy" class="gmail-def">intersectBy</a> :: (a -> b -> <a href="http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Bool.html#t:Bool" title="Data.Bool">Bool</a>) -> [a] -> [b] -> [a] <br></div><div><br></div><div>I approve these versions because:</div><div>1. It makes more sense that the "usual" `delete` and `intersect` functions are specialization of the "By" operations, not the vice versa.</div><div>2. Data.Map.Lazy module from <b>containers</b> package has these kind of "By" operations.<br></div><div><br></div><div>The previous discussion about this in Sep 2016 didn't make much conclusion, so let the discussion continue.<br></div></div>