{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreigmicvtpiw2uj55jucwolyl36d2scabdsqdicwp3lck3vyltvlzdq",
"uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mltxg3zvi7j2"
},
"path": "/t/the-design-of-array-libraries/14114#post_4",
"publishedAt": "2026-05-14T21:28:50.000Z",
"site": "https://discourse.haskell.org",
"tags": [
"sparse vector module"
],
"textContent": "Thanks for the response, I really appreciate feedback from experts.\n\nIn my sparse vector module I have trees of arrays of size up to 64 (together with a Word64 of bits at each level to say what’s present). The interior arrays are all `SmallArray`s but the bottom ones could also be other arrays, e.g. `ByteArray`s filled with integers mod p for e.g. word-sized p (getting this efficient is important for computer algebra). Anyway it’s convenient to code a lot of routines that work at all levels of the tree and all array types the same way using the type classes in contiguous.",
"title": "The design of array libraries"
}