When I was talking about this on the IRC channel, I actually mentioned that I'd prefer (a -> Bool) -> [a] -> [a]. I guess you'd call that filterFirst or something.

Edward Kmett mentioned on IRC that all the fooBy functions follow a pattern, which is why deleteBy isn't like that.

On Sunday, June 21, 2015, David Feuer <david.feuer@gmail.com> wrote:

+1, but what's wrong with just

whatever::(a->Bool)->[a]->[a]

Is this some subtle efficiency thing relating to closure creation?

On Jun 21, 2015 2:32 AM, "Grant Slatton" <grantslatton@gmail.com> wrote:
Right now the type of deleteBy is:

(a -> a -> Bool) -> a -> [a] -> [a]

That is, it takes an equality predicate, a value, and a list, and deletes the first element in the list such that the equality predicate returns true for the given value and the element.

This can be generalized to:

(a -> b -> Bool) -> a -> [b] -> [b]


Example use case:

keyValues :: [(a, b)]

key :: a

deleteBy (\x (y, _) -> x == y) key keyValues



Thanks

Grant Slatton

_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries