2005-08-28 [長年日記]
λ. クロージャ
もちろん、Haskellでも出来ますよ。
ioCounter :: IO (IO Integer) ioCounter = do ref <- newIORef 0 return $ do modifyIORef ref (1+) readIORef ref test = do c <- ioCounter c >>= print -- => 1 c >>= print -- => 2
【2006-03-28 追記】 鷲見さんの sumim’s smalltalking-tos の 「Perl6 あなどれじ。クロージャ記述の短さ対決!」というエントリのコメントで、このコードを元に増分を毎回指定できるようにしたバージョンが紹介されていた。面白い。