Coffee Cats is an attempt to port Cats from Scala to Java, it is primarily intended as an exploration of how far we can push the Java type system, and as a learning tool for better understanding functional programming structures.
Cats is a proof-of-concept library intended to provide abstractions for functional programming in Scala.
The name is a concatenation of a playful translation of Java into Coffee and cats a shortening of category.
At the moment, coffee-cats is not published to any maven repository, and it is not recommended for use in any real projects.
Work on Documentation hasn't started, in the meantime we suggest looking at the documentation for cats
Cats documentation is available in the form of tutorials on the Cats website, as well as through Scaladoc (also reachable through the website).
Coffee Cats is a standard Maven Project. You'll need Maven and a Java 8 JDK installed in order to build Coffee Cats
Run mvn package
from the top level project directory to build coffee-cats, execute the tests, and produce a jar file.
It's my intent to modularize coffee cats at a future date, at the moment it is a single module project
There are many ways to support Coffee Cats' development:
-
Contribute to Cats: This project is a work in progress port of the cats library, contributions to cats will eventually help this project as well.
-
Port examples, tutorials, documentation, or functionality from cats. Please create an issue (if one doesn't already exist) and comment on the it to help avoid duplicated work.
-
Fix bugs: Despite out best efforts bugs happen. Reporting problems you encounter (with the documentation, code, or anything else) helps us to improve. Look for issues labelled "ready" as good targets, but please add a comment to the issue if you start working on one. We want to avoid any duplicated effort.
-
Write JavaDoc comments: One of our goals is to have JavaDoc comments for all types in Cats. The documentation should describe the type and give a basic usage (it may also link to relevant papers).
-
Write tutorials and examples: In addition to inline JavaDoc comments, we hope to provide Markdown-based tutorials which can demonstrate how to use all the provided types. These should be literate programs i.e. narrative text interspersed with code.
-
Improve the laws and tests: Cats' type classes rely on laws (and law-checking) to make type classes useful and reliable. If you notice laws or tests which are missing (or could be improved) you can open an issue (or send a pull request).
-
Help with code review: Most of our design decisions are made through conversations on issues and pull requests. You can participate in these conversations to help guide the future of Coffee Cats.
We will be using the meta label for large design decisions, and your input on these is especially appreciated.
-
Ask questions: we are hoping to make Coffee Cats (and functional programming in Java) as accessible as possible to the largest number of people. If you have questions it is likely many other people do as well, and as a community this is how we can grow and improve.
The current maintainers (people who can merge pull requests) are:
- agenovese Angelo Genovese
We are currently following a practice of requiring at least one sign-off to merge PRs. As the team grows, we will expand this to two sign-offs.
Discussion around Coffee-Cats is currently happening in the Gitter channel as well as on Github issue and PR pages. You can get an overview of who is working on what via Waffle.io.
Feel free to open an issue if you notice a bug, have an idea for a feature, or have a question about the code. Pull requests are also gladly accepted. For more information, check out the contributor guide. You can also see a list of past contributors in AUTHORS.md.
People are expected to follow the Typelevel Code of Conduct when discussing Cats 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.
If you are being harassed, please contact one of us immediately so that we can support you.
Coffee Cats is a port of the Cats library Cats Cats is closely-related to Structures; both projects are descended from Scalaz.
There are many related Haskell libraries, for example:
- semigroupoids
- profunctors
- contravariant
- ...and so on.
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. The design is informed by many other projects, in particular Cats, Structures, & Scalaz.
Copyright the maintainers, 2015.