module Effectful.Zoo.DataLog.Data.DataLogger ( DataLogger(..), mkDataLogger, ) where import Effectful import Effectful.Dispatch.Static import HaskellWorks.Prelude newtype DataLogger i = DataLogger { forall i. DataLogger i -> i -> IO () run :: i -> IO () } deriving stock (forall x. DataLogger i -> Rep (DataLogger i) x) -> (forall x. Rep (DataLogger i) x -> DataLogger i) -> Generic (DataLogger i) forall x. Rep (DataLogger i) x -> DataLogger i forall x. DataLogger i -> Rep (DataLogger i) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall i x. Rep (DataLogger i) x -> DataLogger i forall i x. DataLogger i -> Rep (DataLogger i) x $cfrom :: forall i x. DataLogger i -> Rep (DataLogger i) x from :: forall x. DataLogger i -> Rep (DataLogger i) x $cto :: forall i x. Rep (DataLogger i) x -> DataLogger i to :: forall x. Rep (DataLogger i) x -> DataLogger i Generic instance Contravariant DataLogger where contramap :: forall a' a. (a' -> a) -> DataLogger a -> DataLogger a' contramap a' -> a f (DataLogger a -> IO () g) = (a' -> IO ()) -> DataLogger a' forall i. (i -> IO ()) -> DataLogger i DataLogger (a -> IO () g (a -> IO ()) -> (a' -> a) -> a' -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . a' -> a f) mkDataLogger :: () => (i -> Eff r ()) -> Eff r (DataLogger i) mkDataLogger :: forall i (r :: [Effect]). (i -> Eff r ()) -> Eff r (DataLogger i) mkDataLogger i -> Eff r () run = Persistence -> Limit -> ((forall {r}. Eff r r -> IO r) -> IO (DataLogger i)) -> Eff r (DataLogger i) forall (es :: [Effect]) a. HasCallStack => Persistence -> Limit -> ((forall r. Eff es r -> IO r) -> IO a) -> Eff es a unsafeConcUnliftIO Persistence Persistent Limit Unlimited (((forall {r}. Eff r r -> IO r) -> IO (DataLogger i)) -> Eff r (DataLogger i)) -> ((forall {r}. Eff r r -> IO r) -> IO (DataLogger i)) -> Eff r (DataLogger i) forall a b. (a -> b) -> a -> b $ \forall {r}. Eff r r -> IO r effToIO -> DataLogger i -> IO (DataLogger i) forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (DataLogger i -> IO (DataLogger i)) -> DataLogger i -> IO (DataLogger i) forall a b. (a -> b) -> a -> b $ (i -> IO ()) -> DataLogger i forall i. (i -> IO ()) -> DataLogger i DataLogger ((i -> IO ()) -> DataLogger i) -> (i -> IO ()) -> DataLogger i forall a b. (a -> b) -> a -> b $ Eff r () -> IO () forall {r}. Eff r r -> IO r effToIO (Eff r () -> IO ()) -> (i -> Eff r ()) -> i -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . i -> Eff r () run