about local statements inside block



Dear Robert,

Thanks for  useful explanations,  i'm sorry, i did not understand properly 
 ? block at the first glance.

rgds,
Valery 

On Thursday 19 June 2008 23:50:31 Robert Dodier wrote:
> On 6/18/08, Valery Pipin <pip at iszf.irk.ru> wrote:
> >  Am I right to expect that local declaration like, e.g.,
> >  f(a):=block(local(y),y:2, a*y);
> >  will declare variable y to belong to that block only?
>
> Not exactly. The "local" function saves & restores symbol properties,
> but not the symbol value. block([y], ...) saves & restores the value.
>
> Maxima stores a lot of stuff as symbol properties, e.g. function
> definitions. In this example "local" makes a local function definition.
>
> foo (x) := 17 * x;
> bar (y) := block (local (foo), foo (x) := x - 29, foo (y));
> foo (10);
>  => 170
> bar (10);
>  => -19
> foo (10);
>  => 170
>
> HTH
>
> Robert Dodier