Here's another common function I use all the time, which appears to be missing from Data.List: elemBy :: (a -> a -> Bool) -> a -> [a] -> Bool elemBy eq _ [] = False elemBy eq x (y:ys) = x `eq` y || elemBy eq x ys Regards, Malcolm