the most recent vinyl version (0.5) https://hackage.haskell.org/package/vinyl-0.5
winds up being a REALLY nice balance of flexibility, good type inference, and a few other things.
Its actually simple enough that for a work project I decided it would be simpler to write a custom version of the same datastructure just to avoid extra deps. (and because I needed some slightly bespoke invariants)