bluefin-0.2.6.0: The Bluefin effect system
Safe HaskellNone
LanguageHaskell2010

Bluefin.Writer

Synopsis

Documentation

In most cases you'll probably prefer Stream to Writer, but Writer can still be useful in some cases, for example with Data.Monoid.Any to determine whether an event ever occurred.

Handle

data Writer w (e :: Effects) #

Instances

Instances details
e :> es => OneWayCoercible (Writer w e :: Type) (Writer w es :: Type) 
Instance details

Defined in Bluefin.Internal

Handle (Writer w) 
Instance details

Defined in Bluefin.Internal

Methods

handleImpl :: HandleD (Writer w) #

mapHandle :: forall (e :: Effects) (es :: Effects). e :> es => Writer w e -> Writer w es #

(TypeError ('Text "Writer cannot be cloned. Perhaps you want an STM channel?") :: Constraint) => CloneableHandle (Writer w) 
Instance details

Defined in Bluefin.Internal.CloneableHandle

Handlers

runWriter #

Arguments

:: forall w (es :: Effects) r. Monoid w 
=> (forall (e :: Effects). Writer w e -> Eff (e :& es) r)

͘

-> Eff es (r, w) 
>>> getAny $ snd $ runPureEff $ runWriter $ \w -> do
      -- Non-empty list (the tell event does happen)
      for_ [1 .. 10] $ \_ -> tell w (Any True)
True

execWriter #

Arguments

:: forall w (es :: Effects) r. Monoid w 
=> (forall (e :: Effects). Writer w e -> Eff (e :& es) r)

͘

-> Eff es w 
>>> getAny $ runPureEff $ execWriter $ \w -> do
      -- Non-empty list (the tell event does happen)
      for_ [1 .. 10] $ \_ -> tell w (Any True)
True
>>> getAny $ runPureEff $ execWriter $ \w -> do
      -- Empty list (the tell event does not happen)
      for_ [] $ \_ -> tell w (Any True)
False

Effectful operations

tell #

Arguments

:: forall (e :: Effects) (es :: Effects) w. e :> es 
=> Writer w e 
-> w

͘

-> Eff es () 
>>> getAny $ runPureEff $ execWriter $ \w -> do
      -- Non-empty list (the tell event does happen)
      for_ [1 .. 10] $ \_ -> tell w (Any True)
True