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

PersistentSetMultimap? #21

Open
nornagon opened this issue Oct 17, 2017 · 6 comments
Open

PersistentSetMultimap? #21

nornagon opened this issue Oct 17, 2017 · 6 comments

Comments

@nornagon
Copy link

Guava's ImmutableSetMultimap is a convenient wrapper around ImmutableMap<K, ImmutableSet<V>>. It would be awesome to have a similar convenience in Paguro!

@GlenKPeterson
Copy link
Owner

Good suggestion! The "Comparison to a Map of Collections" in Google's Multimap explained to me what it's good for (I've never used one).

I'm currently split between converting the entire project to Kotlin and getting pieces of it incorporated into Kategory. I'm not sure of the ultimate relationship to Kategory. I think the Kotlin conversion and Kategory work are a higher priority because they set the over-all direction of the project. I may have to make changes to use slightly different interfaces than Paguro uses now. Your request is currently number 3 in my queue, but 1 and 2 are pretty big, so it will probably be months, (plural) not days or weeks before I can do this, but it's on the roadmap.

@GlenKPeterson GlenKPeterson modified the milestones: 4.1, 4.2 Oct 18, 2017
@nornagon
Copy link
Author

nornagon commented Oct 18, 2017 via email

@GlenKPeterson
Copy link
Owner

I've been getting the impression that the persistent collections as a separate artifact would be more popular than when bundled with other functional programming tools. So I'm thinking about how best to make that happen already. Good to know there's another vote for that.

If you like Paguro, you're probably going to like Kotlin. If you haven't played with it, I encourage you to try it. It has rapidly become my favorite language. It also compiles to JavaScript, so that opens even more doors.

Kotlin functions already wrap checked exceptions. Kotlin has data classes which make tuples much less useful. Kotlin's stream/transform is pretty sweet and already assumes unmodiafiability. Some of those Paguro-Java features might be stripped off in the Kotlin version. So it sounds like the part you might lose is the part you don't want! Again, if you like those features, you may find yourself switching to Kotlin for those reasons, Paguro aside.

For the stand-alone collections I don't think Java users are going to know whether Paguro is written in Java or Kotlin. The 2-way compatibility between the two languages is excellent. Not perfect, but really, really good.

It's possible that Java programmers using Paguro-Kotlin would get Kotlin's stream API and maybe access to some other Kotlin features. I don't know. Kotlin's stream API is actually really nice. It assumes unmodifiable collections. It's simple and easy to learn. Kotlin's Extension Functions let you add .sum() only to streams of type Number. Again, not sure how that will come across in Java, but that's going to allow much more/better functionality without much more code.

So, that's my Kotlin ad for the day. I should get a commission from JetBrains! I'm not affiliated with them in any way.

@nornagon
Copy link
Author

nornagon commented Oct 18, 2017 via email

@nornagon
Copy link
Author

nornagon commented Oct 18, 2017 via email

@GlenKPeterson
Copy link
Owner

I made a new issue for the collections: #22

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants