HaskellもSTモナドとか使えば内部状態をエミュレートできるんじゃなかったっけ?