実践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
%