module Development.Shake.Plus.Cache (
newCache
, newCacheIO
) where
import qualified Development.Shake
import Development.Shake.Plus.Core
import RIO
newCache :: (MonadRules m, MonadReader r m, Eq k, Hashable k)
=> (k -> RAction r v)
-> m (k -> RAction r v)
newCache ract = ask >>= \r -> liftRules $ (liftAction . ) <$> Development.Shake.newCache (runRAction r . ract)
newCacheIO :: (MonadIO m, MonadReader r m, Eq k, Hashable k) => (k -> RAction r v) -> m (k -> RAction r v)
newCacheIO f = ask >>= \r -> liftIO $ (liftAction . ) <$> Development.Shake.newCacheIO (\y -> runRAction r (f y))