Composable Contravariant Comonadic Logging Library.
This package provides core types and functions to work with the LogAction data type which is both simple and powerful.
newtype LogAction m msg = LogAction { unLogAction :: msg -> m () }
The ideas behind this package are described in the following blog post:
See the following packages for different implementations based on co-log-core:
co-log: taggless final implementations.
co-log-polysemy: extensible effects implementation based on
polysemy.
co-log-core

co-log-core is a lightweight package that provides core types and functions to work with the @LogAction@ data type which is both simple and powerful.
How to use
co-log-core is compatible with the following GHC versions - supported versions
In order to start using co-log-core in your project, you will need to set it up with these steps:
Add the dependency on
co-log-corein your project's.cabalfile. For this, you should modify thebuild-dependssection according to the below section:build-depends: base ^>= LATEST_SUPPORTED_BASE , co-log-core ^>= LATEST_VERSIONTo use this package, refer to the below example.
module Main (main) where import Prelude hiding (log) import Colog.Core (LogAction, logStringStdout, (<&)) app :: LogAction IO String -> IO () app log = do log <& "Starting app..." log <& "Finishing app..." main :: IO () main = app logStringStdout