bluefin-0.7.0.1: The Bluefin effect system
Safe HaskellNone
LanguageHaskell2010

Bluefin.Eff

Synopsis

Eff monad

data Eff (es :: Effects) a #

Instances

Instances details
e <: es => OneWayCoercible (Eff e r :: Type) (Eff es r :: Type) 
Instance details

Defined in Bluefin.Internal

Methods

oneWayCoercibleImpl :: OneWayCoercibleD (Eff e r) (Eff es r) #

MonadFix (Eff es) 
Instance details

Defined in Bluefin.Internal

Methods

mfix :: (a -> Eff es a) -> Eff es a

Applicative (Eff es) 
Instance details

Defined in Bluefin.Internal

Methods

pure :: a -> Eff es a

(<*>) :: Eff es (a -> b) -> Eff es a -> Eff es b

liftA2 :: (a -> b -> c) -> Eff es a -> Eff es b -> Eff es c

(*>) :: Eff es a -> Eff es b -> Eff es b

(<*) :: Eff es a -> Eff es b -> Eff es a

Functor (Eff es) 
Instance details

Defined in Bluefin.Internal

Methods

fmap :: (a -> b) -> Eff es a -> Eff es b

(<$) :: a -> Eff es b -> Eff es a

Monad (Eff es) 
Instance details

Defined in Bluefin.Internal

Methods

(>>=) :: Eff es a -> (a -> Eff es b) -> Eff es b

(>>) :: Eff es a -> Eff es b -> Eff es b

return :: a -> Eff es a

e <: es => OneWayCoercible (Eff e :: Type -> Type) (Eff es :: Type -> Type) 
Instance details

Defined in Bluefin.Internal

Methods

oneWayCoercibleImpl :: OneWayCoercibleD (Eff e) (Eff es) #

Run an Eff

runPureEff :: (forall (es :: Effects). Eff es a) -> a #

runEff :: (forall (e :: Effects). IOE e -> Eff e a) -> IO a #

Resource management

bracket :: forall (es :: Effects) a b. Eff es a -> (a -> Eff es ()) -> (a -> Eff es b) -> Eff es b #

finally :: forall (es :: Effects) b. Eff es b -> Eff es () -> Eff es b #

Type classes

See Bluefin.Eff.IO for the most direct way of doing I/O in Bluefin. If you really want to use MonadIO you can use withMonadIO.

withMonadIO :: forall (e :: Effects) (es :: Effects) r. e <: es => IOE e -> (forall (m :: Type -> Type). MonadIO m => m r) -> Eff es r #

withMonadFail :: forall (e :: Effects) (es :: Effects) r. e <: es => Exception String e -> (forall (m :: Type -> Type). MonadFail m => m r) -> Eff es r #

Effect tracking

data Effects #

Instances

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

Defined in Bluefin.Internal.CloneableHandle

Methods

oneWayCoercibleImpl :: OneWayCoercibleD (GenericCloneableHandle h e) (GenericCloneableHandle h es) #

Handle h => Handle (Rec1 h) 
Instance details

Defined in Bluefin.Internal

Methods

handleImpl :: HandleD (Rec1 h) #

(forall (e' :: Effects) (es' :: Effects). e' <: es' => OneWayCoercible (OneWayCoercibleHandle h e') (OneWayCoercibleHandle h es')) => Handle (OneWayCoercibleHandle h) 
Instance details

Defined in Bluefin.Internal

Handle h => Handle (GenericCloneableHandle h) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

(Handle h, Generic1 h, GCloneableHandle (Rep1 h)) => CloneableHandle (GenericCloneableHandle h) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

Methods

cloneableHandleImpl :: CloneableHandleD (GenericCloneableHandle h)

CloneableHandle h => GCloneableHandle (Rec1 h) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

Methods

gCloneableHandleImpl :: CloneableHandleD (Rec1 h)

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

Defined in Bluefin.Internal

Methods

handleImpl :: HandleD (h1 :*: h2) #

(GCloneableHandle h1, GCloneableHandle h2) => GCloneableHandle (h1 :*: h2) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

Methods

gCloneableHandleImpl :: CloneableHandleD (h1 :*: h2)

Handle h => Handle (M1 i t h) 
Instance details

Defined in Bluefin.Internal

Methods

handleImpl :: HandleD (M1 i t h) #

GCloneableHandle h => GCloneableHandle (M1 i t h) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

Methods

gCloneableHandleImpl :: CloneableHandleD (M1 i t h)

class (es1 :: Effects) :> (es2 :: Effects) #

Instances

Instances details
e :> e 
Instance details

Defined in Bluefin.Internal

e :> (e :& es) 
Instance details

Defined in Bluefin.Internal

e :> es => e :> (x :& es) 
Instance details

Defined in Bluefin.Internal

type (<:) = (:>) #

type (:&) = 'Union #

Deprecated

runEff_ :: (forall (e :: Effects). IOE e -> Eff e a) -> IO a #