{"id":13486080,"url":"https://github.com/typelevel/cats","last_synced_at":"2025-05-13T11:08:31.650Z","repository":{"id":37479175,"uuid":"29986727","full_name":"typelevel/cats","owner":"typelevel","description":"Lightweight, modular, and extensible library for functional programming.","archived":false,"fork":false,"pushed_at":"2025-05-13T01:40:49.000Z","size":55971,"stargazers_count":5323,"open_issues_count":245,"forks_count":1216,"subscribers_count":184,"default_branch":"main","last_synced_at":"2025-05-13T11:08:14.195Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://typelevel.org/cats/","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/typelevel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":"https://opencollective.com/typelevel"}},"created_at":"2015-01-28T20:26:48.000Z","updated_at":"2025-05-13T01:36:47.000Z","dependencies_parsed_at":"2023-09-29T08:54:03.912Z","dependency_job_id":"9616042c-c0bb-4b06-b7f7-1ff6b7f5beca","html_url":"https://github.com/typelevel/cats","commit_stats":{"total_commits":4961,"total_committers":599,"mean_commits":8.282136894824708,"dds":0.9288449909292481,"last_synced_commit":"769bf21b83a81a070868b878414a21012d78dd9d"},"previous_names":[],"tags_count":74,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typelevel%2Fcats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typelevel%2Fcats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typelevel%2Fcats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typelevel%2Fcats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typelevel","download_url":"https://codeload.github.com/typelevel/cats/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253929367,"owners_count":21985802,"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-07-31T18:00:39.073Z","updated_at":"2025-05-13T11:08:31.624Z","avatar_url":"https://github.com/typelevel.png","language":"Scala","readme":"## Cats\n\n![Cats graphic](https://typelevel.org/cats/img/cats2.png)\n\n[![cats-core Scala version support](https://index.scala-lang.org/typelevel/cats/cats-core/latest-by-scala-version.svg?targetType=Js)](https://index.scala-lang.org/typelevel/cats/cats-core) ![Continuous Integration](https://github.com/typelevel/cats/workflows/Continuous%20Integration/badge.svg)\n[![Financial Contributors on Open Collective](https://opencollective.com/typelevel/all/badge.svg?label=financial+contributors)](https://opencollective.com/typelevel)\n[![Discord](https://img.shields.io/discord/632277896739946517.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=404244\u0026labelColor=6A7EC2)](https://discord.gg/XF3CXcMzqD)\n\n### Overview\n\nCats is a library which provides abstractions for functional programming in the [Scala programming language](https://scala-lang.org).\n\nScala supports both object-oriented and functional programming, and this is reflected in the hybrid approach of the\nstandard library. Cats strives to provide functional programming abstractions that are core, [binary compatible](#binary-compatibility-and-versioning), [modular](https://typelevel.org/cats/motivations.html#modularity), [approachable](https://typelevel.org/cats/motivations.html#approachability) and [efficient](https://typelevel.org/cats/motivations.html#efficiency). A broader goal of Cats is to provide a foundation for an [ecosystem of pure, typeful libraries](https://typelevel.org/cats/typelevelEcosystem.html) to support functional programming in Scala applications.\n\nFor more detail about Cats' motivations, go [here](https://typelevel.org/cats/motivations.html).\n\n### Why \"cats\"?\n\nThe name is a playful shortening of the word *category*, from \"[category theory](https://en.wikipedia.org/wiki/Category_theory)\".\n\nRegardless, you do not need to know anything about category theory to use Cats.\n\n## Contributors\n\n### Code Contributors\n\nThis project exists thanks to [all the people who contribute](https://github.com/typelevel/cats/graphs/contributors). We welcome contributions to Cats and would love for you to help build\nCats. See our [contributor guide](CONTRIBUTING.md) for more\ninformation about how you can get involved as a developer. If you are looking for something to start with, [here is a beginner friendly list](https://github.com/typelevel/cats/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).\n\n### Financial Contributors\n\n[Become a financial contributor](https://opencollective.com/typelevel) and help us sustain our community. Donations directly support office hours for maintainers, better documentation and strategic initiatives.\n\n\u003ch4\u003ePlatinum Sponsors\u003c/h4\u003e\n\u003ca href=\"https://opencollective.com/typelevel/contribute/platinum-sposor-12420/checkout\"\u003ePlatinum sponsorship\u003c/a\u003e starts at $950 USD/month.\n\u003cdiv id=\"platinum-sponsors\"\u003e\n  \u003cnoscript\u003ePlatinum Sponsors appear here at \u003ca href=\"https://typelevel.org/cats/#financial-contributors\"\u003ehttps://typelevel.org/cats\u003c/a\u003e\u003c/noscript\u003e\n\u003c/div\u003e\n\n\u003ch4\u003eGold Sponsors\u003c/h4\u003e\n\u003ca href=\"https://opencollective.com/typelevel/contribute/gold-sponsor-12419/checkout\"\u003eGold Sponsorship\u003c/a\u003e starts at $420 USD/month.\n\u003cdiv id=\"gold-sponsors\"\u003e\n  \u003cnoscript\u003eGold Sponsors appear here at \u003ca href=\"https://typelevel.org/cats/#financial-contributors\"\u003ehttps://typelevel.org/cats\u003c/a\u003e\u003c/noscript\u003e\n\u003c/div\u003e\n\n\u003ch4\u003eSilver Sponsors\u003c/h4\u003e\n\u003ca href=\"https://opencollective.com/typelevel/contribute/silver-sponsor-11780/checkout\"\u003eSilver Sponsorship\u003c/a\u003e starts at $180 USD/month.\n\u003cdiv id=\"silver-sponsors\"\u003e\n  \u003cnoscript\u003eSilver Sponsors appear here at \u003ca href=\"https://typelevel.org/cats/#financial-contributors\"\u003ehttps://typelevel.org/cats\u003c/a\u003e\u003c/noscript\u003e\n\u003c/div\u003e\n\n\u003ch4\u003eBackers\u003c/h4\u003e\nBecome a \u003ca href=\"https://opencollective.com/typelevel/contribute/backer-11779/checkout\"\u003eBacker\u003c/a\u003e with a recurring donation of just $5 USD/month.\n\u003cdiv id=\"backers\"\u003e\n  \u003cnoscript\u003eBackers appear here at \u003ca href=\"https://typelevel.org/cats/#financial-contributors\"\u003ehttps://typelevel.org/cats\u003c/a\u003e\u003c/noscript\u003e\n\u003c/div\u003e\n\n\u003ch4\u003eOther contributors\u003c/h4\u003e\nWe thankfully accept \u003ca href=\"https://opencollective.com/typelevel/donate\"\u003eone-time and recurring\u003c/a\u003e contributions as well.\n\u003cdiv id=\"other-contributors\"\u003e\n  \u003cnoscript\u003eOther contributors appear here at \u003ca href=\"https://typelevel.org/cats/#financial-contributors\"\u003ehttps://typelevel.org/cats\u003c/a\u003e\u003c/noscript\u003e\n\u003c/div\u003e\n\n\u003cscript src=\"/cats/js/sponsors.js\"\u003e\u003c/script\u003e\n\n### Getting Started\n\nCats is available for [Scala.js](http://www.scala-js.org/) and [Scala Native](https://www.scala-native.org/), as well as the standard JVM runtime.\n\nCats relies on improved type inference via the fix for [SI-2712](https://github.com/scala/bug/issues/2712), which is not enabled by default. For **Scala 2.12** you should add the following to your `build.sbt`:\n\n```scala\nscalacOptions += \"-Ypartial-unification\"\n```\n\n(Partial unification is on by default since Scala 2.13, the compiler no longer accepts `-Ypartial-unification`)\n\nAnd then create the Cats dependency, by adding the following to your `build.sbt`:\n\n```scala\nlibraryDependencies += \"org.typelevel\" %% \"cats-core\" % \"2.9.0\"\n```\n\nThis will pull in the cats-core module. If you require some other\nfunctionality, you can pick-and-choose from amongst these modules\n(used in place of `\"cats-core\"`):\n\n * `cats-kernel`: Small set of basic type classes (*required*).\n * `cats-core`: Most core type classes and functionality (*required*).\n * `cats-laws`: Laws for testing type class instances.\n * `cats-free`: Free structures such as the free monad, and supporting type classes.\n * `cats-testkit`: lib for writing tests for type class instances using laws.\n * `algebra`: Type classes to represent algebraic structures.\n * `alleycats-core`: Cats instances and classes which are not lawful.\n\n There are several other Cats modules that are in separate repos so that they can\n maintain independent release cycles.\n\n * [`cats-effect`](https://github.com/typelevel/cats-effect): standard `IO` type together with `Sync`, `Async` and `Effect` type classes\n * [`cats-mtl`](https://github.com/typelevel/cats-mtl): transformer typeclasses for Cats' Monads, Applicatives and Functors.\n * [`mouse`](https://github.com/typelevel/mouse): a small companion to Cats that provides convenient syntax (aka extension methods)\n * [`kittens`](https://github.com/typelevel/kittens): automatic type class instance derivation for Cats and generic utility functions\n * [`cats-tagless`](https://github.com/typelevel/cats-tagless): Utilities for tagless final encoded algebras\n * [`cats-collections`](https://github.com/typelevel/cats-collections): Data structures which facilitate pure functional programming\n * [`cats-testkit-scalatest`](https://github.com/typelevel/cats-testkit-scalatest): Cats testkit integration with Scalatest\n\nPast release notes for Cats are available in [CHANGES.md](https://github.com/typelevel/cats/blob/main/CHANGES.md).\n\n### Documentation\n\nLinks:\n\n1. Website: [typelevel.org/cats/](https://typelevel.org/cats/)\n2. ScalaDoc: [typelevel.org/cats/api/](https://typelevel.org/cats/api/)\n3. Type classes: [typelevel.org/cats/typeclasses.html](https://typelevel.org/cats/typeclasses.html)\n4. Data types: [typelevel.org/cats/datatypes.html](https://typelevel.org/cats/datatypes.html)\n5. Algebra overview: [typelevel.org/cats/algebra.html](https://typelevel.org/cats/algebra.html)\n6. Glossary: [typelevel.org/cats/nomenclature.html](https://typelevel.org/cats/nomenclature.html)\n7. Resources for Learners: [typelevel.org/cats/resources_for_learners.html](https://typelevel.org/cats/resources_for_learners.html)\n8. FAQ: [typelevel.org/cats/faq.html](https://typelevel.org/cats/faq.html)\n9. The Typelevel Ecosystem: [typelevel.org/cats/typelevelEcosystem.html](https://typelevel.org/cats/typelevelEcosystem.html)\n\n### Community\n\nDiscussion around Cats is currently happening on GitHub issues, PR pages,\nand Discord:\n\nThe [Typelevel Discord](https://discord.gg/XF3CXcMzqD) has \\#cats and \\#cats-dev\nchannels, as well as community channels such as \\#beginners.  Please join us!\n\nPeople are expected to follow the\n[Typelevel Code of Conduct](https://typelevel.org/code-of-conduct.html) when\ndiscussing Cats on GitHub, Discord, or other venues.\n\nWe hope that our community will be respectful, helpful, and kind. If\nyou find yourself embroiled in a situation that becomes heated, or\nthat fails to live up to our expectations, you should disengage and\ncontact one of the [project maintainers](#maintainers) in private. We\nhope to avoid letting minor aggressions and misunderstandings escalate\ninto larger problems.\n\nIf you are being harassed, please contact one of [us](#maintainers)\nimmediately so that we can support you.\n\n### Binary compatibility and versioning\n\nAfter `1.0.0` release, we [decided](https://github.com/typelevel/cats/issues/1233)\nto use *MAJOR.MINOR.PATCH* [Semantic Versioning 2.0.0](http://semver.org/)\ngoing forward, which is different from the *EPOCH.MAJOR.MINOR* scheme common among\nJava and Scala libraries (including the Scala lang).\n\nCats strives to provide a solid and stable foundation for an ecosystem of\nFP libraries. Thus, we treat backward binary compatibility maintenance with a high priority.\nIn semantic versioning, backward breaking change is **ONLY** allowed between *MAJOR* versions.\nWe will maintain backward binary compatibility between *PATCH* AND *MINOR* versions.\nFor example, when we release Cats `1.1.0`, it will be backward binary compatible\nwith the previous `1.0.x` versions. I.E. the new JAR will be a drop-in replacement for\nthe old one. This is critical when your application has a diamond\ndependency on Cats - depending on two or more libraries that all depend on Cats.\nIf one library upgrades to the new `1.1.0` Cats before the other one does, your\napplication still runs thanks to this backward binary compatibility.\n\nAlso worth noting is that according to semantic versioning,\n*MINOR* version Y (x.Y.z | x \u003e 0) MUST be incremented\nif new, backwards compatible functionality is introduced to the public API.\nIt MUST be incremented if any public API functionality is marked as deprecated.\n\nAny binary breaking changes will require a *MAJOR* version bump, which we will be very\ncautious about. We will also consider using `organization` and package name for major\nversioning in the future. But that decision is yet to be made.\n\n### Adopters\n\nA (non-exhaustive) list of companies that use Cats in production is featured in [ADOPTERS.md](./ADOPTERS.md). Don't see yours? [You can add it in a PR!](https://github.com/typelevel/cats/edit/main/ADOPTERS.md) And if you can, consider [supporting us](https://opencollective.com/typelevel).\n\n### Maintainers\n\nThe current maintainers (people who can merge pull requests) are:\n\n * [rossabaker](https://github.com/rossabaker) Ross Baker\n * [armanbilge](https://github.com/armanbilge) Arman Bilge\n * [johnynek](https://github.com/johnynek) P. Oscar Boykin\n * [adelbertc](https://github.com/adelbertc) Adelbert Chang\n * [danicheg](https://github.com/danicheg) Daniel Esik\n * [LukaJCB](https://github.com/LukaJCB) Luka Jacobowitz\n * [peterneyens](https://github.com/peterneyens) Peter Neyens\n * [tpolecat](https://github.com/tpolecat) Rob Norris\n * [non](https://github.com/non) Erik Osheim\n * [barambani](https://github.com/barambani) Filippo Mariotti\n * [mpilquist](https://github.com/mpilquist) Michael Pilquist\n * [milessabin](https://github.com/milessabin) Miles Sabin\n * [djspiewak](https://github.com/djspiewak) Daniel Spiewak\n * [fthomas](https://github.com/fthomas) Frank Thomas\n * [satorg](https://github.com/satorg) Sergey Torgashov\n * [julien-truffaut](https://github.com/julien-truffaut) Julien Truffaut\n * [kailuowang](https://github.com/kailuowang) Kailuo Wang\n\nRetired committers include:\n\n * [ceedubs](https://github.com/ceedubs) Cody Allen\n * [travisbrown](https://github.com/travisbrown) Travis Brown\n\nWe are currently following a practice of requiring at least two\nsign-offs to merge code PRs (and for large or contentious issues we may\nwait for more). For typos, documentation improvements or minor build fix we\nrelax this to a single sign-off. More detail in the [process document](https://github.com/typelevel/cats/blob/main/PROCESS.md).\n\n\n\n\n### Copyright and License\n\nAll code is available to you under the MIT license, available at\nhttp://opensource.org/licenses/mit-license.php and also in the\n[COPYING](https://github.com/typelevel/cats/blob/main/COPYING) file. The design is informed by many other\nprojects, in particular [Scalaz](https://github.com/scalaz/scalaz).\n\nCopyright the maintainers, 2015-2025.\n","funding_links":["https://opencollective.com/typelevel","https://opencollective.com/typelevel/contribute/platinum-sposor-12420/checkout","https://opencollective.com/typelevel/contribute/gold-sponsor-12419/checkout","https://opencollective.com/typelevel/contribute/silver-sponsor-11780/checkout","https://opencollective.com/typelevel/contribute/backer-11779/checkout","https://opencollective.com/typelevel/donate"],"categories":["Scala","Table of Contents","Extensions","Functional Programming"],"sub_categories":["Extensions"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypelevel%2Fcats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftypelevel%2Fcats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypelevel%2Fcats/lists"}