@@ -102,13 +102,13 @@ cacheLookup (Store _ (Just lru)) key = do
104--------------------------------------------------------------------------------
104--------------------------------------------------------------------------------
105−cacheIsMember :: Store -> String -> Bool
105+cacheIsMember :: Store -> String -> IO Bool
106−cacheIsMember (Store _ Nothing) _ = False
106+cacheIsMember (Store _ Nothing) _ = return False
107−cacheIsMember (Store _ (Just lru)) key =
107+cacheIsMember (Store _ (Just lru)) key = do
108− let res = Lru.lookup key lru in
108+ res <- Lru.lookup key lru
109− case Just res of
109+ case res of
110− Nothing -> False
110+ Nothing -> return False
111− _ -> True
111+ _ -> return True
114--------------------------------------------------------------------------------
114--------------------------------------------------------------------------------
@@ -165,10 +165,9 @@ get store identifier = do
165--------------------------------------------------------------------------------
165--------------------------------------------------------------------------------
166-- | Strict function
166-- | Strict function
167isMember :: Store -> [String] -> IO Bool
167isMember :: Store -> [String] -> IO Bool
168−isMember store identifier
168+isMember store identifier = do
169− | cacheIsMember store key = return True
169+ inCache <- cacheIsMember store key
170− | otherwise = doesFileExist path
170+ if inCache then return True else doesFileExist path
173 key = hash identifier
172 key = hash identifier
174 path = storeDirectory store </> key
173 path = storeDirectory store </> key