
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
+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"
javascript:_e(%7B%7D,'cvml','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 javascript:_e(%7B%7D,'cvml','Libraries@haskell.org'); http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries