TypeScriptでState Monadを実装する ref: http://qiita.com/Kitam/items/b624266f89adb15278cd