typelevel/cats-mtl
{ "createdAt": "2017-04-23T00:09:13Z", "defaultBranch": "main", "description": "cats transformer type classes.", "fullName": "typelevel/cats-mtl", "homepage": "https://typelevel.org/cats-mtl/", "language": "Scala", "name": "cats-mtl", "pushedAt": "2025-11-24T22:05:00Z", "stargazersCount": 310, "topics": [ "cats", "functional-programming", "monad", "transformer-typeclasses", "typeclasses" ], "updatedAt": "2025-11-24T22:05:05Z", "url": "https://github.com/typelevel/cats-mtl"}
Cats MTL
Section titled “Cats MTL”Provides transformer typeclasses for cats’ Monads, Applicatives and Functors.
You can have multiple cats-mtl transformer typeclasses in scope at once without implicit ambiguity, unlike in pre-1.0.0 cats or Scalaz 7.
libraryDependencies += "org.typelevel" %% "cats-mtl" % "1.4.0"If your project uses ScalaJS, replace the double-% with a triple. Note that cats-mtl has an upstream dependency on cats-core version 2.x.
Cross-builds are available for Scala 2.12, 2.13, 3, Scala Native, and ScalaJS major version 1.x.
If you’re not sure where to start or what Cats MTL even is, please refer to the getting started guide.
Supported Classes
Section titled “Supported Classes”EitherTKleisliIorTOptionTReaderWriterStateTStateTWriterT
The cats-mtl-laws artifact provides Discipline-style laws for all of the type classes defined in cats-mtl. It is relatively easy to use these laws to test your own implementations of these typeclasses. Take a look here for more.
libraryDependencies += "org.typelevel" %% "cats-mtl-laws" % "1.4.0" % TestThese laws are compatible with both Specs2 and ScalaTest.
Documentation
Section titled “Documentation”Links:
- Website: typelevel.org/cats-mtl/
- ScalaDoc: typelevel.org/cats-mtl/api/
Related Cats links (the core):
- Website: typelevel.org/cats/
- ScalaDoc: typelevel.org/cats/api/
Community
Section titled “Community”People are expected to follow the Typelevel Code of Conduct when discussing cats-mtl on the Github page, Gitter channel, or other venues.
We hope that our community will be respectful, helpful, and kind. If you find yourself embroiled in a situation that becomes heated, or that fails to live up to our expectations, you should disengage and contact one of the project maintainers in private. We hope to avoid letting minor aggressions and misunderstandings escalate into larger problems.
License
Section titled “License”All code is available to you under the MIT license, available at http://opensource.org/licenses/mit-license.php and also in the COPYING file.