Practical uses of monads in Haskell

On the “haskellquestions” subreddit, a user recently asked for some help with monads in Haskell. In their post, they wrote (slightly paraphrased): I feel stuck. I understand the basic concept of monads, but when it comes to the practical use of different types of monads, I am lost. My answer to them was one long comment . But, in hindsight, I think that I could have structured my answer a bit…