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