getCharが返しているのは>>=を適用したときに裏で実行されるはずの計算.
ユーザ定義でないモナドの場合は表記できない
(表から見ている限りgetCharの動作(意味論)はわからないことに注意.
getCharがランダムに値を返そうと常に同じ値を返そうと関係なく動作する.
これがモナドによる意味論のモジュール化ということ).
データコンストラクタで陽に表現できるのは,
そのモナドに関する裏の世界が陽に見えるユーザ定義のモナドの場合だけ.