let p2 = p1.setIn("key").setIn("subkey").set("val" => v => v+1); would be magnificent to have, even under a different method name, but I'm far from sure how/if the type system can be made happy with this.