Branko Čibej wrote: > Move away/from with Id is essentially introducing a namespace for temporary > paths unrelated to the tree structure. Therefore you can change notation and > keep only one move operation with three variants: >
> move(a,b): direct move of node to new path > move(a,tmp(1)): move to temporary slot > move(tmp(1),b): move from temporary slot > > N.b. this does not imply a single conflated move API on the code level, it > merely describes the protocol.> > Making the edit driver assign temporary slots explicitly is better than > forcing the receiver to second-guess the driver's intent, I think what you're saying is that, in cases where the driver can issue a move(a,b) instead of a (functionally equivalent) pair of move-away immediately followed by move-here, then the receiver is likely to be able to process that single move more efficiently. So having the three methods available is better than just having the latter two. Do I understand you correctly? We should probably just leave it as a "quality of implementation" issue for the editor driver to prefer single move(a,b) instructions over pairs of move-away, move-here. We could try to come up with a requirement that it must do so in certain cases (starting with collapsing adjacent pairs of move-away, move-here), but I think this may be rather difficult to define fully and hard to justify. > and also makes validating the drive easier. I'm not sure what you're thinking about validating the editor drive being easier. - Julian