I’ve recently made an attempt to implement a generic collection library for 
Racket using racket/generic. My implementation is a work in progress, but you 
can find it here:

https://github.com/lexi-lambda/racket-alexis-collections 
<https://github.com/lexi-lambda/racket-alexis-collections>

Documentation is also available if you’re interested in taking a peek at how it 
works.

I’ve been discussing how to best handle this sort of project with Vincent on 
IRC. He has his own version of generic collections as well, located here 
<https://github.com/stamourv/generic-collections>, which takes a decidedly 
different approach. I think we’re both interested in having a discussion about 
how to best approach this problem, since having generic collections in the core 
would be a nice improvement, but that’s a long-term goal.

In a more immediate sense, I’ve run into a few issues with the current generics 
implementation that I think need to be solved in order to create an expressive 
enough system to adequately handle the different data structures Racket 
contains. I’ve written up some of the things that have come to my immediate 
attention on the wiki page on GitHub 
<https://github.com/plt/racket/wiki/Generics-Plans#proposed-extensions-to-the-generics-system>.
 I would appreciate any comments or feedback.

In addition to those problems, there are more collections-specific issues that 
would be helpful to untangle, such as how to handle operations such as map and 
append on heterogenous arguments, as well as the general structure of the 
interfaces. I will continue to attempt to create what my ideal implementation 
would look like, but, as Vincent has said, I think now is a good time to try 
out different approaches and weighing the pros and cons.

Sam has also suggested taking cues from Clojure, Scala, and Haskell with 
regards to their collections APIs, which probably provide good examples of the 
pros and cons of existing approaches. I haven’t done any extensive work in any 
of those languages, so if anyone is familiar with their strengths and 
weaknesses, it would be helpful to hear what you like and don’t like about them.

Alexis

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-dev+unsubscr...@googlegroups.com.
To post to this group, send email to racket-dev@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/AE4CCA7C-6F88-499D-B415-90FA7A184338%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to