В начале изучения вообще не стоит упоминать это слово, а то оно только пугает. Проще принять логику Haskell в работе с самыми нужными элементами: списками, IO, Maybe, do-нотацией, — а потом уже осознание само придет, что это все монады, и ничего страшного в них нет.
Ну, я тоже со списками работаю как со списками, хотя list comprehensions иногда очень удобны.
Мне вот интересно, а когда haskell-программисты создают свои монады (часто ли они это делают?) они реально берут ручку с бумажкой и доказывают монадические законы или?
У меня в этом опыта пока мало, но обычно если монада не слишком заумная, из ее вида очевидно, что законам она удовлетворяет. Но скорее всего, прежде чем ее представить общественности, программист обязательно все проверит. :)
Еще Одно Руководство по Монадам (часть 4: Монада Maybe и монада списка)