Ramonda

RML010 — a chain written through twice

const blog: { posts: { title: string }[] } = { posts: [{ title: "a" }, { title: "b" }] };

const posts = focusOn(blog).get("posts");
posts.at(0).get("title").set("one");
posts.at(1).get("title").set("two"); // ✗ throws

focusOn(root) captures root once, so the second write is computed from the original value and silently drops the first edit. The result looks plausible and is missing a change, which is far harder to find than a throw.

Feed the result back in — focusOn(next).… — or make one and of the edits. Sharing a prefix to read is fine and never trips this.

Next