Yes! This is exactly the kind of task zippers where designed for.
- Repeatedly call zip/next until you find the node you are looking for.
- Then call
zip/path
to find out where you are relative to the root. - Then call
zip/up
,zip/down
,zip/left
etc to get to the node to modify. - update the node
- call
zip/root
to get your new map containing these changes.