-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move cats-free and cats-state in to cats-core #765
Conversation
Current coverage is
|
👍 |
1 similar comment
👍 |
Minor, but I had added the following text to the contributors guide a short time ago: "Tests for additional modules, such as free, go into the tests directory within that module." If this goes through, and free moves into core, then it might make sense to change the above text to refer to the jvm module instead of referring to free, as free will no longer be a separate module and the tests have been factored to the main tests directory. I can push through a separate change at some stage if it doesn't make this one, but for consistency it might be better to change the docs and the code together. |
Thanks for pointing that out; not near a PC at the minute but I'll try and address the documentation changes this evening. |
Rerunning tests now. 👍 once they pass. |
Move cats-free and cats-state in to cats-core
Thanks! |
It's quite possible that people are going to throw tomatoes at me for proposing this change. There has been much discussion about modularization in the past, and in fact free used to have its own module, which was removed in typelevel#760/typelevel#765. One significant change that has happened since then is that `State` has started to use `Eval` instead of `Trampoline` for trampolining. At this point, nothing outside of the `free` package in `cats-core` depends on `free` (which is why this PR was so easy to create). To me that makes it a fairly convenient border for modularization. There was a [brief discussion](https://gitter.im/typelevel/cats?at=5716322b548df1be102e3f3c) about this on Gitter in which @sellout supported this change on the basis that they prefer to use fixpoint types (such as `Mu`) for free structures. Putting `free` into a separate module may be better for people who want to use different variations of these structures. Of course in addition to these more recent updates, there are the usual arguments for modularization and decreased jar size (which I believe is especially important for `catsJS` users).
To address #760