assoc-in reminds me a lot of lenses in Haskell. I figure you could probably implement something like it using them. This is what I came up with:<p><pre><code> import Control.Lens
baseLens --> nextIndex = baseLens . ix nextIndex
assocIn structure keyLens newValue = set keyLens newValue structure
</code></pre>
It works like so:<p><pre><code> setTo256 structure = assocIn structure (ix 0 --> 0 --> 0) 256
-- setTo256 [[[1]], [[2]]] returns [[[256]], [[2]]]</code></pre>