On Sun, Feb 13, 2005 at 06:05:23PM -0500, [EMAIL PROTECTED] wrote: > G'day all. > > Quoting David Roundy <[EMAIL PROTECTED]>: > > > It might be interesting to write a "backtracking" IO-like monad which > > obeyed m >> mzero === mzero. I imagine you could do it for something like > > an ACID database, if you define === as meaning "has the same final result > > on the database", which of course would only be useful if the database had > > sufficient locking that it couldn't have been read between the original m > > and the later mzero. > > You should talk to the logic programming community about this some time. > > As Lee Naish has pointed out on many occasions, it would involve finding a > way to insert the page back into the laser printer and lift the toner off.
That's why it would only be possible in a limited realm such as a database, where you could "quarantine" the changes using locking, and where you could define strictly define "equality" in the world in which the IO takes place. It basically would just require a journalling system, which I imagine most decent databases provide in order to give ACID behavior. I'm far from a database expert, but this is how I understand that these things work. -- David Roundy http://www.darcs.net _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe