{"id":26059632,"url":"https://github.com/mnikander/cpp_monads","last_synced_at":"2026-06-04T17:31:21.114Z","repository":{"id":262102913,"uuid":"886213741","full_name":"mnikander/cpp_monads","owner":"mnikander","description":"Common monads implemented in C++","archived":false,"fork":false,"pushed_at":"2025-01-24T09:57:19.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T10:29:04.685Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/mnikander.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-10T13:56:45.000Z","updated_at":"2025-01-24T09:57:22.000Z","dependencies_parsed_at":"2025-01-04T10:57:36.441Z","dependency_job_id":"0a1abf79-44ae-493b-89a0-66887685534c","html_url":"https://github.com/mnikander/cpp_monads","commit_stats":null,"previous_names":["mnikander/cpp_monads"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Fcpp_monads","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Fcpp_monads/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Fcpp_monads/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Fcpp_monads/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mnikander","download_url":"https://codeload.github.com/mnikander/cpp_monads/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242555305,"owners_count":20148672,"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":"2025-03-08T13:26:50.507Z","updated_at":"2025-12-04T19:04:35.924Z","avatar_url":"https://github.com/mnikander.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Monads in C++\n\nSome common monads are easy to implement in C++.\n\nNote that the implementations for 'Maybe' and 'Result' in this repository do _not_ strictly encapsulate the values.\nIt is possible to check if there is a value in the Maybe, and unwrap it manually.\nStrictly speaking, this should not be allowed, and instead 'bind' or function lifting should be used to raise all functions into the monadic context.\nSince this is often non-trivial in C++, i.e. the possibility to manually unwrap the values has been left open.\n\n## Getting started\n\n1. Install dependencies\n```bash\nsudo apt get install g++ cmake libgtest-dev\n```\n\n2. Clone the repo\n```bash\ngit clone #...\ncd #... navigate into the freshly cloned repo\n```\n\n3. Build and run:\n```bash\nmkdir out \u0026\u0026 cd out \u0026\u0026 cmake .. \u0026\u0026 cd .. # out-of-source build\ncmake --build out/ \u0026\u0026 ./out/unit_tests\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnikander%2Fcpp_monads","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmnikander%2Fcpp_monads","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnikander%2Fcpp_monads/lists"}