bluefin-0.7.0.1: The Bluefin effect system
Safe HaskellNone
LanguageHaskell2010

Bluefin.Exception.GeneralBracket

Synopsis

Effectful functions

generalBracket :: forall r b h a (es :: Effects). Handle h => Eff es r -> MakeExceptions r a h es -> (r -> b -> Eff es a) -> (r -> Eff es ()) -> (forall (e :: Effects). h e -> r -> Eff (e :& es) b) -> Eff es a #

Handle

data MakeExceptions r a (h :: Effects -> Type) (es :: Effects) #

Instances

Instances details
(Handle h, e <: es) => OneWayCoercible (MakeExceptions r a h e :: Type) (MakeExceptions r a h es :: Type) 
Instance details

Defined in Bluefin.Internal.Exception

Methods

oneWayCoercibleImpl :: OneWayCoercibleD (MakeExceptions r a h e) (MakeExceptions r a h es) #

Handle h => Handle (MakeExceptions r a h) 
Instance details

Defined in Bluefin.Internal.Exception

catchWithResource :: forall ex r a (es :: Effects). (r -> ex -> Eff es a) -> MakeExceptions r a (Exception ex) es #

pureMakeExceptions :: forall h (e :: Effects) r a. h e -> MakeExceptions r a h e #

apMakeExceptions :: forall (h1 :: Effects -> Type) (h2 :: Effects -> Type) r a (e :: Effects). (Handle h1, Handle h2) => MakeExceptions r a (h1 :~> h2) e -> MakeExceptions r a h1 e -> MakeExceptions r a h2 e #

fmapMakeExceptions :: forall (h1 :: Effects -> Type) (h2 :: Effects -> Type) (e :: Effects) r a. (Handle h1, Handle h2) => (h1 :~> h2) e -> MakeExceptions r a h1 e -> MakeExceptions r a h2 e #

:~>

data ((h1 :: Effects -> Type) :~> (h2 :: Effects -> Type)) (es :: Effects) #

Instances

Instances details
(Handle h1, Handle h2, e <: es) => OneWayCoercible ((h1 :~> h2) e :: Type) ((h1 :~> h2) es :: Type) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

Methods

oneWayCoercibleImpl :: OneWayCoercibleD ((h1 :~> h2) e) ((h1 :~> h2) es) #

(Handle h1, Handle h2) => Handle (h1 :~> h2) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

Methods

handleImpl :: HandleD (h1 :~> h2) #

abstract :: forall h2 h1 (es :: Effects). Handle h2 => (forall (e :: Effects). h1 e -> h2 (e :& es)) -> (h1 :~> h2) es #