計算機科学のブログ

実践Haskell 効率的でステートフルな配列 UArray型を使って効率のよい配列を作成する 明確な初期化、リスト、範囲、zip関数、cycle関数

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 42(Haskellでの効率的でステートフルな配列)、42.1(UArray型を使って効率のよい配列を作成する)、UArrayを更新するのクイックチェック 42-2の解答を求めてみる。

コード

import Data.Array.Unboxed

beansInBuckets :: UArray Int Int
beansInBuckets = array (0, 3) $ zip [0..3] $ cycle [0]

main :: IO ()
main = do
    print beansInBuckets
    mapM_ (\i -> print $ beansInBuckets ! i) [0..3]

入出力結果(Terminal, Zsh)

% runghc sample02.hs
array (0,3) [(0,0),(1,0),(2,0),(3,0)]
0
0
0
0
%