module Control.Effect.Unclog (Log (..), publishLogEntry) where
import Chronos.Types (Time)
import Control.Algebra (Has, send)
import Unclog.Common (LogEntry)
data Log m r where
PublishLogEntry :: (Time -> LogEntry) -> Log m ()
publishLogEntry :: Has Log sig m => (Time -> LogEntry) -> m ()
publishLogEntry :: forall (sig :: (* -> *) -> * -> *) (m :: * -> *).
Has Log sig m =>
(Time -> LogEntry) -> m ()
publishLogEntry = Log m () -> m ()
forall (eff :: (* -> *) -> * -> *) (sig :: (* -> *) -> * -> *)
(m :: * -> *) a.
(Member eff sig, Algebra sig m) =>
eff m a -> m a
send (Log m () -> m ())
-> ((Time -> LogEntry) -> Log m ()) -> (Time -> LogEntry) -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Time -> LogEntry) -> Log m ()
forall {k} (m :: k). (Time -> LogEntry) -> Log m ()
PublishLogEntry
{-# INLINE publishLogEntry #-}