summaryrefslogtreecommitdiff
path: root/src/Storage.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Storage.hs')
-rw-r--r--src/Storage.hs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Storage.hs b/src/Storage.hs
index 295273b..be9b8af 100644
--- a/src/Storage.hs
+++ b/src/Storage.hs
@@ -28,7 +28,9 @@ data Store = Store
createStore :: Int -> Int -> IO Store
createStore maxCapacity ballotSize = do
v <- Vec.replicate (maxCapacity * ballotSize) 0
- return (Store v ballotSize)
+ return (Store
+ { getPointer = v
+ , getBallotSize = ballotSize })
@@ -42,7 +44,9 @@ setPref prefStore ballot (position,rank) = do
setPrefs :: Store -> Int -> [Preference] -> IO ()
-setPrefs prefStore ballot prefList =
+setPrefs prefStore ballot prefList = do
+ let blank = take (getBallotSize prefStore) (zip [1..] (cycle [0]))
+ mapM_ (setPref prefStore ballot) blank
mapM_ (setPref prefStore ballot) prefList