2026-08-27
Bump.hs
import Data.IORef
bump :: IORef Int -> IO ()
bump ref = undefined -- write this: add 1 to the value stored in ref
bumpを実装してください。refに格納されているIntの値を1増やします。
Reference
bump :: IORef Int -> IO ()
bump ref = modifyIORef' ref (+1)
modifyIORef'は、参照の中身に関数を適用して書き換える、Haskellで数少ない「本当の意味でのインクリメント」に近い操作です。ここで'付きの正格版を使うことが重要です — 無印のmodifyIORefは新しい値をサンク(遅延評価される計算)のまま溜め込んでしまい、同じIORefを繰り返しインクリメントするコードでメモリ膨張やスタックオーバーフローを招くことがあります。これは参考実装であり、唯一の正解ではありません。