Skip to content
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? #760

Closed
mpilquist opened this issue Dec 17, 2015 · 5 comments
Closed

Move cats-free and cats-state in to cats-core? #760

mpilquist opened this issue Dec 17, 2015 · 5 comments

Comments

@mpilquist
Copy link
Member

I don't recall the rationale for making the cats.free package its own module, but the way in which it forces State to be in its own module is a big enough of a disadvantage that I think we should reconsider.

This would also allow us to close https://github.com/non/cats/issues/573.

@travisbrown
Copy link
Contributor

👍. I think modularity is a good goal, but I don't think this is a useful way to cut things. Together these two jars are less than 5% of the size of cats core, and I don't think separating them makes the API more intelligible in any way.

@stew
Copy link
Contributor

stew commented Dec 17, 2015

👍

@aryairani
Copy link
Contributor

Hooray!

@milessabin
Copy link
Member

👍

@dwijnand
Copy link
Contributor

dwijnand commented Jan 6, 2016

Can be closed now that #765 is merged.

ceedubs added a commit to ceedubs/cats that referenced this issue Apr 23, 2016
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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants