haskell-jp / random #104 at 2023-09-27 10:06:40 +0900

サーバーとかで、いろいろなパラメータの統計をとる場合、たくさんの IORef ではなく、IOUArray を用意してそれぞれの要素を atomic に更新したくなります。
array にそういう関数は提供されてないのですが、プリミティブに cas があるようで、"massiv" パッケージを参考に作ってみました。
https://github.com/kazu-yamamoto/dnsext/blob/main/dnsext-utils/DNS/Array.hs
Haskellの弱点が、一挙になくなった感じ。
array はデフォルトでこれを提供してほしい。。。
まぁ、衝突は避けた方がいいので、コアごとに配列を持ち、読み出すときに足し合わせるのがいいと思います。