I've been able to use Racket to build an option trading application (https://github.com/evdubs/renegade-way). The included GUI and Plot libraries have been really nice to use.
With Racket, I miss having real threads and rich "batteries included" data structures as you'd find in Java and C#.
> Threads run concurrently, in the sense that one thread can preempt another without its cooperation, but threads currently all run on the same processor (i.e., the same underlying operating system process and thread).
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.
I want to share data structures built for handling concurrency between threads. I'm less interested in having to "share memory" by message passing between places. Plus, places are more clunky to use compared to Racket's `thread`.
[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.
With Racket, I miss having real threads and rich "batteries included" data structures as you'd find in Java and C#.