X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=Data%2FHashTable.hs;h=0f31af52509bde78501971800c3e8b0561d0bc9c;hb=1d4e5b6a7ccc588a1436910c6e1535ba71aba67d;hp=39fc93cd904c1907d9cb8d40cf730b22072a706e;hpb=d0050b1bea9bb8ede55ed360ec5fb7131d195e0c;p=haskell-directory.git diff --git a/Data/HashTable.hs b/Data/HashTable.hs index 39fc93c..0f31af5 100644 --- a/Data/HashTable.hs +++ b/Data/HashTable.hs @@ -1,4 +1,4 @@ -{-# OPTIONS -fno-implicit-prelude #-} +{-# OPTIONS_GHC -fno-implicit-prelude #-} ----------------------------------------------------------------------------- -- | @@ -275,13 +275,13 @@ expandHashTable then return table else do -- - when (newindex == 0) $ + when (newindex == 0) $ do segment <- newIOArray (0,sEGMENT_SIZE-1) [] writeIOArray dir newsegment segment -- doesn't happen very often, so we might as well use a safe -- array index here. -- - let table' = + let table' = if (split+1) < max then table{ split = split+1, bcount = bcount+1 } @@ -292,7 +292,7 @@ expandHashTable max_bucket = max * 2, mask1 = mask2, mask2 = mask2 `shiftL` 1 .|. 1 } - let + let split_bucket old new [] = do segment <- myReadArray dir oldsegment myWriteArray segment oldindex old @@ -304,10 +304,10 @@ expandHashTable then split_bucket old ((k,v):new) xs else split_bucket ((k,v):old) new xs -- - segment <- myReadArray dir oldsegment - bucket <- myReadArray segment oldindex - split_bucket [] [] bucket - return table' + segment <- myReadArray dir oldsegment + bucket <- myReadArray segment oldindex + split_bucket [] [] bucket + return table' -- ----------------------------------------------------------------------------- -- Deleting a mapping from the hash table