{"id":15555749,"url":"https://github.com/unkindpartition/monad-classes","last_synced_at":"2025-04-23T20:14:55.687Z","repository":{"id":17757365,"uuid":"20611642","full_name":"UnkindPartition/monad-classes","owner":"UnkindPartition","description":"A more flexible mtl","archived":false,"fork":false,"pushed_at":"2018-02-23T10:53:12.000Z","size":73,"stargazers_count":64,"open_issues_count":0,"forks_count":11,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-23T20:14:37.660Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UnkindPartition.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-08T07:11:22.000Z","updated_at":"2024-05-02T20:51:19.000Z","dependencies_parsed_at":"2022-08-04T21:03:04.477Z","dependency_job_id":null,"html_url":"https://github.com/UnkindPartition/monad-classes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnkindPartition%2Fmonad-classes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnkindPartition%2Fmonad-classes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnkindPartition%2Fmonad-classes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnkindPartition%2Fmonad-classes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UnkindPartition","download_url":"https://codeload.github.com/UnkindPartition/monad-classes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250506141,"owners_count":21441723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T15:10:29.979Z","updated_at":"2025-04-23T20:14:55.661Z","avatar_url":"https://github.com/UnkindPartition.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/feuerbach/monad-classes.svg?branch=master)](https://travis-ci.org/feuerbach/monad-classes)\n\nSee [this series of articles][1] for the detailed description and motivation.\n\n[1]: https://ro-che.info/articles/extensible-effects\n\nThis is a more flexible version of mtl, the monad transformers library.\n\n*   You can have many layers of e.g. state transformers in your stack, and\n    you don't have to explicitly lift your `get`s and `put`s, as soon as\n    different state transformers carry different types of states.\n\n    Example:\n\n    ``` haskell\n    a :: (MonadState Bool m, MonadState Int m) =\u003e m ()\n    a = do\n      put False -- set the boolean state\n      modify (+ (1 :: Int)) -- modify the integer state\n    ```\n\n*   mtl requires *Θ(n\u003csup\u003e2\u003c/sup\u003e)* instances (like `MonadReader e (StateT s m)`);\n    monad-classes requires only *Θ(n)* of them (where *n* is the number of\n    different transformer types).\n\n    If you'd like to define your own monad-classes-style class, you have to\n    write much less boilerplate code.\n\n## The status of this repo\n\nThis repo serves two purposes:\n\n* as a reference implementation accompanying the [series of articles on\n  extensible effects][1]\n* as an actual implementation we use at [Signal Vine](http://signalvine.com/)\n\nWhile this is technically open source software, I am not interested in maintaining this as\nan active open project. In practice this means that:\n\n* this version of monad-classes is not on hackage\n* I do not accept feature requests and pull requests. The exception is outright\n  bugs; if you find any, please do report them.\n\nThere is a [hackage package][2] and a [repo][3] maintained by M Farkas-Dyck.\n\n[2]: https://hackage.haskell.org/package/monad-classes\n[3]: https://github.com/strake/monad-classes.hs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funkindpartition%2Fmonad-classes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funkindpartition%2Fmonad-classes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funkindpartition%2Fmonad-classes/lists"}