on master help sign in
using accumulator.
commitdd0e4cecb3c8be3a0ad3504dcfb77b6e44872f16 authorKazu Yamamoto <kazu@iij.ad.jp> dateFri 18 Mar 2016, 14:46 (11 years ago) parent690dc01
1 file changed+7−8
warp/Network/Wai/Handler/Warp/MultiMap.hs+7−8
warp/Network/Wai/Handler/Warp/MultiMap.hs+7−8
@@ -16,8 +16,8 @@ module Network.Wai.Handler.Warp.MultiMap (
1616#if __GLASGOW_HASKELL__ < 709
1717import Control.Applicative ((<$>))
1818#endif
19−import Data.IntMap (IntMap)
20−import qualified Data.IntMap as I
19+import Data.IntMap.Strict (IntMap)
20+import qualified Data.IntMap.Strict as I
2121import qualified Network.Wai.Handler.Warp.Some as S
2222
2323----------------------------------------------------------------
@@ -74,15 +74,14 @@ toList m = concatMap f $ I.toAscList m
7474pruneWith :: MMap v
7575 -> (v -> IO Bool)
7676 -> IO (MMap v)
77−pruneWith m action = I.fromAscList <$> go (I.toAscList m)
77+pruneWith m action = I.fromAscList <$> go (I.toDescList m) []
7878 where
79− go [] = return []
80− go ((k,s):kss) = do
79+ go [] acc = return acc
80+ go ((k,s):kss) acc = do
8181 mt <- S.prune action s
82− lst <- go kss
8382 case mt of
84− Nothing -> return lst
85− Just t -> return $ (k,t) : lst
83+ Nothing -> go kss acc
84+ Just t -> go kss ((k,t) : acc)
8685
8786----------------------------------------------------------------
8887