Namaran

Code daily. Without assist.

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を繰り返しインクリメントするコードでメモリ膨張やスタックオーバーフローを招くことがあります。これは参考実装であり、唯一の正解ではありません。