Practical uses of catamorphisms: where do you learn from?

I’ve been going through the catamorphisms series from Brian (which is all I can see for his name) and these blog posts are fantastic. There are similar series from fsharpforfunandprofit etc but the reason I really like these posts is because they address more real life concerns one would discover if they were to use catamorphisms than others.

Such as: how to avoid copying a whole tree, how to avoid traversing the whole tree, etc etc…

This is the essence of my question: how do you learn these type of methods? The web is full of blog posts, which either get obsessed with relating the topic to category theory, or leave it at a simpler level than what would be helpful when implementing potentially production code. I must insist I have no intention of starting a discussion about the usefulness of category theory, that’s just not what I’m seeking.

So especially what books, if any, provide the type of hints and guidance Brian’s posts are offering? I’d also ask Brian where and how he/she learned it from if I had a means of communication, but I’m hoping this community may have some members to guide me.

The resources can be in Haskell, OCaml etc, as long as they provide that valuable real life advice.

Thanks!