@@ -102,13 +102,13 @@ cacheLookup (Store _ (Just lru)) key = do
102102
103103
104104--------------------------------------------------------------------------------
105−cacheIsMember :: Store -> String -> Bool
106−cacheIsMember (Store _ Nothing) _ = False
107−cacheIsMember (Store _ (Just lru)) key =
108− let res = Lru.lookup key lru in
109− case Just res of
110− Nothing -> False
111− _ -> True
105+cacheIsMember :: Store -> String -> IO Bool
106+cacheIsMember (Store _ Nothing) _ = return False
107+cacheIsMember (Store _ (Just lru)) key = do
108+ res <- Lru.lookup key lru
109+ case res of
110+ Nothing -> return False
111+ _ -> return True
112112
113113
114114--------------------------------------------------------------------------------
@@ -165,10 +165,9 @@ get store identifier = do
165165--------------------------------------------------------------------------------
166166-- | Strict function
167167isMember :: Store -> [String] -> IO Bool
168−isMember store identifier
169− | cacheIsMember store key = return True
170− | otherwise = doesFileExist path
171−
168+isMember store identifier = do
169+ inCache <- cacheIsMember store key
170+ if inCache then return True else doesFileExist path
172171 where
173172 key = hash identifier
174173 path = storeDirectory store </> key