It’s evidently useful to know that some arbitrary structure is a monoid, functor or anything else because it let’s you know what it is basically capable of (or rather, what it can’t do).
However, whenever I start using a library I look up what the central structure is an instance of I still need to look at the implementation of each to see exactly what mconcat
, fmap
or bind
does. Is this always needed?