つまり, RealWorld を状態とした State モナドの一種である. しかし, これは現実世界のモデルとしてはある意味 壊れている. なぜなら, GHC は RealWorld 型の値をユーザに一切触らせないようにすることでプログラム実行の線形性を担保しているからだ. もし触れたとしたら, 値をコピーすることで現実世界を 分裂 させたり, なかったことに したり, 過去に戻って やり直したりできてしまう. acme-realworld はこのモデルのおかしさをうまく突いたジョークパッケージで, GHC の内部関数を使ってそれを行えるようにする6. 線形時相論理 両者のいいところ取りをするにはどうすればいいのだろうか. 言語の持つよい性質を保ちつつ, 現実世界における計算の発生順序をきちんと言語内で扱うには, やはり, 言語のカリーハワード先の体系自体に現実世界を扱う能力を持たせるの