Оставляя за скобками fail (который есть возвращение сообщения об ошибке), их по сути два:
1.
1.1. берём значение "а" и помещаем его в контекст "м". Взяли число 8, получили Just 8 (читать как 8 в контексте Just)
2.
2.1. берём значение "а" в контексте "м" (Just 8
2.2. берём функцию, которая принимает значение "а" и возвращает значение типа "b" в контексте "м" (т.е. том же самом контексте, в котором находится "а" в п.2.1). Just 8 >>= intToString (это не Haskell, а как говорит Брагилевский - язык H; читать как взять Just 8 и штуку, которая применит функцию intToString к 8
2.3. возвращаем значение типа "б" в контексте "м" (в данном случае - вернёт Just "8", т.е. вернёт значение другого типа)
P.S. Дэн Абрамов, если что говорил, что он не в курсе монад ) ничего - не помешало карьерному продвижению )