| > | deleteBy :: (a -> b -> Bool) -> a -> [b] -> [b] | > | | > | I've found it usefully used at this more general type. | > | > Indeed, and | > | > deleteFirstsBy :: (a -> b -> Bool) -> [b] -> [a] -> [b] | | and | | intersectBy :: (a -> b -> Bool) -> [a] -> [b] -> [a] Indeed. We should either generalise all three deleteBy deleteFirstsBy intersectBy or none. In favour: the more general types are occasionally useful no programs stop working Against it's an unforced change perhaps some error message may get more obscure Tom wrote | That suggests a reason to leave the type of intersectBy alone | - the generalisation would arbitrarily favour the first | list's type over the second list's type. To me, the word | "intersect" implies symmetry. The point is that you can always use it at the symmetrical type too. This isn't a big issue, or I would not be considering it at this point. So I solicit feedback, and will then just decide something. Simon