Мне встречалась фраза: "для многих знакомство с Haskell заканчивается на монадах". Монады действительно сложны для понимания, а самая непонятная, лично для меня, была монада State.
На простом примере, я хочу показать всю полезность монады State и еще большую полезность трансформера StateT.