withSingletonCache :: (Monad m, Eq k)
                   => (Cache m k v -> m a)
                   -> (Cache m k v -> m a)
withSingletonCache body c = body (singletonCache c)
withSingletonCache :: (Monad m, Eq k)
                   => (Cache m k v -> m a)
                   -> (Cache m k v -> m a)
withSingletonCache body c = body (singletonCache c)
withSingletonCache body c = body (singletonCache c)