module Control.Effect.Interpreter.Heftia.Resource where
import Control.Effect.Hefty (Elab)
import Data.Effect.Resource (Resource (Bracket, BracketOnExcept))
import UnliftIO (MonadUnliftIO, bracket, bracketOnError)
resourceToIO :: MonadUnliftIO m => Elab Resource m
resourceToIO :: forall (m :: * -> *). MonadUnliftIO m => Elab Resource m
resourceToIO = \case
Bracket m a1
acquire a1 -> m ()
release a1 -> m x
thing -> forall (m :: * -> *) a b c.
MonadUnliftIO m =>
m a -> (a -> m b) -> (a -> m c) -> m c
bracket m a1
acquire a1 -> m ()
release a1 -> m x
thing
BracketOnExcept m a1
acquire a1 -> m ()
onError a1 -> m x
thing -> forall (m :: * -> *) a b c.
MonadUnliftIO m =>
m a -> (a -> m b) -> (a -> m c) -> m c
bracketOnError m a1
acquire a1 -> m ()
onError a1 -> m x
thing