Dan wrote:
Let me point out some possibilities that require undo. [...] One could do experiments involving multiple engines along the lines of Althofer's n-Hirns. (I don't think the exact n-Hirn idea that was successful in Chess will work immediately in Go, though Althofer has been trying it, but there are possibilities of doing something using multiple engines.)
This can be implemented with undo, but a much better solution is to have a genmove command which doesn't imply that the engine automatically plays the move. This is how gg_genmove in GNU Go works and I have a feeling that maybe we should change the semantics of the genmove_white and genmove_black commands to get this behaviour. The drawback with this proposal is that in normal operation the driving program would have to echo the result from a genmove_black command in a black command to execute the move (and likewise for white moves).
While we're speaking of the genmove commands I also think that it may be better to replace the genmove_black and genmove_white commands with a single command genmove, taking "black" or "white" as parameter (this is also how gg_genmove is designed). I'm starting to think that this would be a better design. Similarly the black and white commands may be replaced by a single play command taking "black" or "white" as parameters together with the vertex to play.
Opinions?
/Gunnar