co-log-polysemy: Composable Contravariant Comonadic Logging Library

[ comonad, contravariant, effects, library, logging, mpl, program ] [ Propose Tags ]

Implementation of the co-log logging based on the polysemy extensible effects library.

The ideas behind this package are described in the following blog post:

For the taggless final implementation of the co-log ideas se the following package:

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,,,,,
Change log
Dependencies base (>=4.11 && <4.21), co-log-core (>= && <0.4), co-log-polysemy, polysemy (>= && <1.10) [details]
License MPL-2.0
Copyright 2019-2020 Kowainik, 2021-2024 Co-Log
Author Dmitrii Kovanikov
Maintainer Kowainik <>
Category Logging, Contravariant, Comonad, Effects
Home page
Bug tracker
Source repo head: git clone
Uploaded by alaendle at 2024-06-08T11:25:44Z
Distributions LTSHaskell:, NixOS:, Stackage:
Reverse Dependencies 7 direct, 5 indirect [details]
Executables play-colog-poly
Downloads 2023 total (36 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-06-08 [all 1 reports]

Readme for co-log-polysemy-

[back to package description]



GitHub CI Hackage MPL-2.0 license

co-log-polysemy package is a implementation of the co-log-core logging based on the polysemy extensible effects library.

How to use

co-log-polysemy is compatible with the following GHC versions - supported versions

In order to start using co-log-polysemy in your project, you will need to set it up with these easy steps:

  1. Add the dependency on co-log-polysemy in your project's .cabal file. For this, you should modify the build-depends section according to the below section:

    build-depends: base ^>= LATEST_SUPPORTED_BASE
                 , co-log-core ^>= LATEST_VERSION
                 , polysemy ^>= LATEST_VERSION
  2. To use this package, refer to the below example

    module Main (main) where
    import Prelude hiding (log)
    import Polysemy (Member, Sem, runM)
    import Colog.Core.IO (logStringStdout)
    import Colog.Polysemy (Log, log, runLogAction)
    example :: Member (Log String) r => Sem r ()
    example = do
         log @String "First message..."
         log @String "Second message..."
    main :: IO ()
    main = runM $ runLogAction @IO logStringStdout example