As no one has complained so far, I have decided to go with `temporarily'.

Am Do., 2. Feb. 2023 um 21:02 Uhr schrieb Marc Nieper-Wißkirchen
<marc.nie...@gmail.com>:
>
> What about "temporarily" instead of the quite general "with"?
>
> So, for example:
>
> (temporarily
>     ((current-directory "/home/marc/scheme"))
>   <some code>)
>
> Marc
>
> Am So., 20. Nov. 2022 um 13:17 Uhr schrieb Shiro Kawai 
> <shiro.ka...@gmail.com>:
> >
> > Ah, OK.  Gauche's original parameterize works like 'with' in the sense that 
> > it can also accep a procedure with zero or one arguments.  It still behaves 
> > differently if a parameter object has a non-idempotent converter, but such 
> > usage is rare, and for Gauche users it can be said that 'with' works mostly 
> > like the original 'parameterize'.  However, thinking of RnRS parameterize, 
> > 'with' is certainly a different construct.
> >
> > Now I see 'with' as a generalization of 'with-*' style procedures that 
> > temporarily alter dynamic state.  It encapsulates the typical pattern of 
> > using dynamic-wind to manage the dynamic states.  If I frame it that way, 
> > the name 'with' fits well.
> >
> > The way srfi-226 currently worded looks like 'with' is another variation of 
> > 'parameterize', with a bonus of allowing parameter-like objects.  How about 
> > introducting 'with' with the statement like this: Sometimes dynamic state 
> > can be managed by a procedure that works like a parameter; when it is 
> > called with no arguments it returns the current value, and wien it is 
> > called with one argument, val, it makes val as the current value.  Combined 
> > with dynamic-wind, the state can be changed in a certain dynmaic scope.  
> > The 'with' form codifies that pattern. [...] Unlike parameterize, 
> > restoration of value is always done by calling parameter-like objects, 
> > allowing parameter-like objects to manipulate external state as well as the 
> > associated value.'
> >
> >
> >
> >
> >
> > On Sat, Nov 19, 2022 at 9:24 PM Marc Nieper-Wißkirchen 
> > <marc.nie...@gmail.com> wrote:
> >>
> >> "with" is not meant as a legacy mechanism because parameterize
> >> changed.  As the small language has no delimited continuations, SRFI
> >> 226's parameterize is backward-compatible to the small language's.
> >>
> >> "With", on the other hand, is not a form of parameterize because it
> >> behaves differently when the converter procedure of parameter objects
> >> is not idempotent.  Use cases for "with" are when parameter-like
> >> objects need to do something non-trivial when the dynamic extent of
> >> the "with" form is left.  For example, there could be a parameter-like
> >> object "current-directory", which changes the current directory on the
> >> OS level in parallel.  This cannot be done with parameterize and
> >> ordinary parameter objects.
> >>
> >> In some sense, "with" is more general, but has no tail context
> >> guarantee (and behaves differently wrt delimited continuations).
> >>
> >> Am So., 20. Nov. 2022 um 00:00 Uhr schrieb Shiro Kawai 
> >> <shiro.ka...@gmail.com>:
> >> >
> >> >
> >> >
> >> > On Sat, Nov 19, 2022 at 12:51 AM Marc Nieper-Wißkirchen 
> >> > <marc.nie...@gmail.com> wrote:
> >> >>
> >> >>
> >> >> Chez Scheme's "with" is only used in a deprecated macro facility
> >> >> ("extend-syntax").  I think, at least for the purpose of Chez, it is
> >> >> safe to reuse the identifier.
> >> >>
> >> >> The identifier "with" is undoubtedly quite general, but so are "let"
> >> >> or "receive".  I would be glad if "parameterize" had a shorter or less
> >> >> complicated name.
> >> >
> >> >
> >> > I see.  Actually, if 'with' is used for dynamic binding (current 
> >> > srfi-226's parameterize), it is a reasonable name compared with let.
> >> > In srfi-226, however, I got an impression that 'parameterize' is given 
> >> > to the true dynamic bindings, while 'with' is a kind of pseudo 
> >> > mechanism, mostly to accommodate the existing code that uses 
> >> > parameter-like objects in place of parameters.  Yet, it has a shorter 
> >> > name and encourages users to use it over 'parameterize'.
> >> >
> >> > I thought it'd be ok before I noticed the subtle difference regarding 
> >> > shift/reset.  I'm for providing a dynamic-wind based mechanism for the 
> >> > backward compatibility of legacy 'parameterize', but I'm afraid that 
> >> > naming it 'with' gives an impression that it is a more general, 
> >> > higher-level construct.  (It is more general in a sense that it accepts 
> >> > parameter-like objets, but the semantics differ.)
> >> >
> >> > In other words: I'm going to tell Gauche users that the new 
> >> > 'parameterize' is not compatible with legacy 'parameterize', it will 
> >> > work most of the time but may behave differently in complicated cases; 
> >> > if you need a full compatibility you have to replace 'parameterize' for  
> >> > 'with'.  I'm afraid that the users then think "ok, then I'm going to use 
> >> > 'with' for all dynamic bindings without worrying about compatibility, 
> >> > and it has a shorter name so it's even better."  It's not desirable 
> >> > situation.
> >> >
> >> >
> >> >
> >> >

Reply via email to