How can I understand monads?
Write code. Write a lot of code in Haskell. Do it without using monads. One way is to restrict yourself to problems that do not require a lot of input and output. You simply use interact to implement the main function and write your program as a transformation from a string to a string.