Ask HN: What are some cool but obscure data structures you know about?
Not a very deep CS-y one, but still one of my favourite data structures: Promise Maps.It only works in languages where promises/futures/tasks are a first-class citizen. Eg JavaScript.When caching the result of an expensive computation or a network call, don't actually cache the result, but cache the promise that awaits the result. Ie don't make a    Map

but a    Map>

This way, if a new, uncached key gets requested twice in rapid succession, ie faster than the computation takes, you avoid computing/fetching the same value twice. This trick works because:- promises hold on to their result value indefinitely (until they're GC'ed)- you can await (or .then()) an existing promise as many times as you want- awaiting an already-resolved promise is a very low-overhead operation.In other words, the promise acts as a mutex around the computation, and the resulting code is understandable even by people unfamiliar with mutexes, locks and so on.