`amb` takes zero or more expressions, and makes a
nondeterministic (or ``ambiguous'') choice among them,
preferring those choices that cause the program to
converge meaningfully. Here we will explore an embedding
of amb in Scheme that makes a depth-first selection of
the ambiguous choices, and uses Scheme's control operator
call/cc to backtrack for alternate choices.
Hmm, sounds interesting, although I'm wondering if there's a significant difference to what immutable data structures together with STM provide - it certainly sounds very much like the transactions you can perform in Clojure, where, if certain conditions aren't met, all modifications are rolled back and you can bail out of your changes. If I had a degree in CS I'd probably even know the name for the difference between the techniques. :-/
To coda that part in a side effect way is a critical part of this approach. It's easy to implement in Haskell where these are handled with trust or you need to do the hard work.
Hardly git exclusively; most any modern version control works well for this. Git's local branching/checkout makes it a slightly faster process though, I suppose.
For instance, if the "world" / "tab" knows that it's no good, it could self-exit. That'd leave only the "good" one standing without any coordination / communication.
Or, in some other cases, return codes may be good enough.
Even if it's easily possible with current stuff though, it's still an interesting idea.