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

For some reason, labs.traversal can't be found #172

Closed
freckletonj opened this issue Jun 24, 2016 · 5 comments
Closed

For some reason, labs.traversal can't be found #172

freckletonj opened this issue Jun 24, 2016 · 5 comments

Comments

@freckletonj
Copy link

All of the other labs work, I've blown out my .m2 of the funcool libs to re-install, nothin works.

I've tried with CLJ 1.8, and 1.9-alpha to see if that helped, still didn't work.

Any idea what I'm doing wrong?

@niwinz
Copy link
Member

niwinz commented Jun 27, 2016

Take care that the traversal stuff is on master but not in the released version.

The lenses part of the traversal is already externalized as standalone function and traversal stuff is in master but I think is going to be deleted. I'm working on library cleanup, the main objective is make the library more maintainable and only have useful stuff.

@niwinz niwinz closed this as completed Jun 27, 2016
@freckletonj
Copy link
Author

ah, I had made an assumption, since traversals were in the docs.

if you clean up, does that mean you'll remove the labs?

If so, I would urge you to leave them. I think that the labs contribute greatly to the value of cats, and if that's becoming a pain to maintain, what if you made a bigger disclaimer that things in labs are not maintained by anyone, and then you could accept contributions without worrying too much if they were broken. At the very least, they could serve as examples of how to extend this custom library to other custom monads.

To be honest, cats is only worth me using (personally) when I extend it, because I can't do a whole lot with its standard monads, but it's worth a lot to me when there's a bigger library of unique monads to use.

@niwinz
Copy link
Member

niwinz commented Jun 27, 2016

No, the labs is maintained but most of the not useful stuff will be removed, such as reader writer, state and continuation monads. In clojure, they are only for demonstration purposes but they are not really useful. Useful stuf like promesa, channel, manifold, etc.. will be there untouched.

In same way the current lens namespace contains lenses and traversables, lenses have demostrated their usefulness but traversables not much. Lenses are externalized as https://github.com/funcool/lentes library and used in many projects but traversal is going to be removed. Also crdt's namespace that was good experiment, but I think the users tend to define their own datastructures in the application to manage their state...

Many cats.labs.sugar will be moved into cats.core to make them available out of the box.

Monad transformers will be removed because they introduce a lot of complexity but the value is very low in comparison...

@freckletonj
Copy link
Author

Gotcha. I understand and agree with most everything you're saying.

I'll provide counterpoint, just so you understand your audience. I won't ask you to change your mind, since you understand your project better than me. I'll just describe my experience, and if you do everything like you were planning anyways, that's fine.

I receive 2 benefits from cats.

  1. what the library can teach (esp. about Category Theory)
  2. what the library can do for my code

I came to cats to learn, and only then wanted to use it in my code (and especially write my own monads, such as Free, and the entire Optics monads including Lens, Traversal, Prism, Review, etc.).

Monads are useful CT constructs, but they're also good design patterns. Having State / Reader / Writer / Traversals allowed me to compare clojure versions against haskell versions, and the abounding tutorials available there. I don't feel like it would be easy for me to learn CT by looking at channels, or manifolds. But the tutorials for State are many. And while I may never use cats.state, a new user may never understand the underpinning theory behind cats.manifold without it.

Anyways, I'm really grateful for cats, and your work in it, and I'm excited to see what it grows into. Personally, I would love to see cats contain all the monads that haskell has, but understand that this is just one data point from among your audience. Interpret my story as you will, and there's no pressure to do anything different!

Thanks for cats!

@niwinz
Copy link
Member

niwinz commented Jun 28, 2016

I understand and also agree with you. This project also has done the same for me, I have learned all the stuff related to category theory thanks for writing this library...

But there are an other think that we should consider: the free time. I'm working on a great bunch of open source libraries / applications and I have very limited time and I need to properly manage it and prioritize things.

And sincerely, I don't have time to spend to maintain stuff that I don't use and have demonstrated no usefulness beyond educational purposes :( We are always open to have new people interested and envolved to maintain or improve the libraries, but in most cases the users just open issues or fixes small bugs.

This is just a my sincere reason behind that planned changes, if you consider that stuff util, maybe they will serve much better for educational purposes in a blog post.

@niwinz niwinz mentioned this issue Jun 28, 2016
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

2 participants