モナドは IO 以外は使わなくても説明できるからとりあえず置いておけばいいんじゃないかな。
IO も、こう書くものだ、で済ませるか、対話環境だけ使うことにするとか。
個人的には、いちばん理解しにくいのは関数適用だけでプログラムを書くということだと思う。
ループしながら変数に代入、みたいなのから
map して filter して fold になかなか切り替えられない。