Giter Club home page Giter Club logo

co-log-polysemy's Introduction

co-log-polysemy

Co-logo

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

co-log-polysemy's People

Contributors

alaendle avatar alexfmpe avatar avi-d-coder avatar chshersh avatar dependabot[bot] avatar gutjuri avatar locallycompact avatar sorki avatar tek avatar udaycruise2903 avatar vrom911 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

hetchr

co-log-polysemy's Issues

A question of integrating with polysemy

When using the custom effect Log provided by co-log-polysemy:

log :: forall msg r. Member (Log msg) r => msg -> Sem r ()

I want the type variable msg be Message, which is defined in Colog.Message, providing some friendly and convenient ways to handle with severity and callstack in logging. However, it seems that the series of functions(logDebug, logInfo, etc.) won't work well, since polysemy does not provide MonadReader instance to satisfy WithLog env msg m constraint, which is required by those functions. And I don't think using LogAction to wrap Sem directly is a good idea. To some extent, I have a sort of intuition that I am still coding with the mtl nested hell :P Anyway, can we have some functions constructing messages without involving the reader environment?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.