With Racket, I miss having real threads and rich "batteries included" data structures as you'd find in Java and C#.
With Racket, I miss having real threads and rich "batteries included" data structures as you'd find in Java and C#.
By real threads, I mean the ability to spawn a thread in Racket that corresponds to a new underlying operating system thread for that Racket process. Just like you get when you spawn a thread in Java.
[Balancing] Binary Search Trees as a standard that is available in many languages; B-Trees if memory locality is important; Skip Lists if there is data structure sharing between real threads and something like a Concurrent Balancing Binary Search Tree would have too much lock contention.
I have looked over the `data-red-black` library; I wish its interface was richer with `map`, `filter`, retrieving a range of values, partitioning/sliding over key-value pairs, and all the other generic sequence operations that hopefully Rhombus can enable for different underlying data structures.
These functional red/black-trees have `map` and `filter`: https://docs.racket-lang.org/functional-data-structures/Red-...
AVL-trees: https://docs.racket-lang.org/avl/index.html
I would be surprised if someone hasn't made a B-tree implementation already.
As bonus: Another red/black-tree implementation (imperative): https://github.com/soegaard/little-helper/blob/master/planet...