There's a big difference between operations that don't care what's in the Foldable, or that inherently know it, and ones that do care. Foldable is very good at things that don't care, or that know it, like foldl, foldl', foldl1, foldr, foldr', foldr1, toList, length, null, and, or, any, all. For elem, sum, product, asum, and traverse_, it matters very much, but Foldable can't distinguish!