As opposed to the internal logic of monads, how they work, I hope to start a discussion about their external logic: how and why to use monads.design------How do monads change the way one* thinks about a problem?* structures data?* refactors?* tests?Should I always be giving the monads a lot of cognitive bandwidth, because they reorder the way everything should be, or is it an investment with a high initial cognitive cost but requiring little maintenance thereafter?what is their common framework?-------------------------------Monads let data reach farther than it otherwise would. Subjectively, they feel like a controlled way of violating encapsulation.Are there other, deeper or more specific, commonalities that explain why monads are a good way to implement exceptions, output, state, and perhaps other services?