invalidateCache (CmdCache carr) = do
   (a,z) <- liftIO $ getBounds carr
   mapM_ (\i -> modInd i (\(_,cn) -> (Nothing,cn))) [a..z]
 where modInd i f = readArray carr i >>= writeArray carr i . f
invalidateCache (CmdCache carr) = do
   (a,z) <- liftIO $ getBounds carr
   mapM_ (\i -> modInd i (\(_,cn) -> (Nothing,cn))) [a..z]
 where modInd i f = readArray carr i >>= writeArray carr i . f
invalidateCache (CmdCache carr) = do
   (a,z) <- liftIO $ getBounds carr
   mapM_ (\i -> modInd i (\(_,cn) -> (Nothing,cn))) [a..z]
 where modInd i f = readArray carr i >>= writeArray carr i . f