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 #-}