トップ «前の日記(2005-08-27) 最新 次の日記(2005-08-29)» 月表示 編集

日々の流転


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 あなどれじ。クロージャ記述の短さ対決!」というエントリのコメントで、このコードを元に増分を毎回指定できるようにしたバージョンが紹介されていた。面白い。

Tags: haskell