: dip swap '_ set execute _ ; : nip swap drop ; : first 0 extract nip ; : second 1 extract nip ; : assoc-in swap keys eq ; : assoc-index' over keys swap eq [1] index collapse ; : at swap assoc-index' subscript collapse second ; : delete-at swap assoc-index' first remove ; : keys 1 transpose first ; : set-at over 'dup dip assoc-in '+ reduce if 'dup dip delete-at then "swap 2 compress 1 compress" dip swap append ; [['foo 5]] 10 'bar rot set-at 'bar over at . 'hello 'bar rot set-at 20 'baz rot set-at .