明示して引数で持ち回れば純粋な関数、
暗黙に引き渡せば副作用を持つ不純な関数(ないし手続き)。
明示して引数で持ち回る純粋な関数の
引数部分を隠蔽したのがモナド。
だからモナドは手続きと同じ構造を持つというだけ。
リストモナドの非決定性計算を副作用と考えるような「副作用」の定義に拠るなら、
全てのモナドは副作用を扱っている(が、そう考えても別に役には立たない)。