On Wed, Mar 27, 2013 at 11:04 AM, Stefan Israelsson Tampe < stefan.ita...@gmail.com> wrote:
> Hi Noha, > > On Wed, Mar 27, 2013 at 3:29 PM, Noah Lavine <noah.b.lav...@gmail.com> > wrote: > > Hello, > > > > > > On Wed, Mar 27, 2013 at 9:22 AM, Stefan Israelsson Tampe > > <stefan.ita...@gmail.com> wrote: > > I don't understand the difference. If I use ~, I get redo-safe behavior, > and > > if I use !, I get regular behavior (value shared between dynamic states). > > Can I use ~ and ! on the same variable at different places in the code? > If > > yes, doesn't it have to switch behavior? > > using set! means that you basically destroys the redo safe property. > There is no sound concept where you mix them. If you want to mix them > use ~ and add correct function guards to describe the semantics. > ... > You want to allow a user to let one variable behave as with set! and one as > with > set~. It is not broken, the useres sees ~ on one of the varibles and ! > on the other. > Yes, I agree. What I'm saying is, there should be two different ways to declare the variables, and once a variable is declared, you should not need to look elsewhere in the code to see whether it acts like a regular or redo-safe variable. If that is what you specified, I apologize, but I thought that it wasn't. In particular, I think that having an MIT-Scheme-style fluid-let will do the right thing here. I would be interested in talking about its interaction with closure variables, but I think that it's the right thing here with regard to continuations and mutable state. > BTW. srfi's shouuld be careful about specifying dynamic state in order > to achieve thread safe concpets, Scheme48 is threadsafe with their > fluid-let, guile would not be. > Yes, that's an interesting point. Noah