MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Set in Scan

  • To: mathgroup at smc.vnet.net
  • Subject: [mg21904] Re: Set in Scan
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Fri, 4 Feb 2000 02:54:37 -0500 (EST)
  • Organization: Universitaet Leipzig
  • References: <87aua2$ntf@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

v1 = {0, 0, 0, 0};
v2 = {1, 1, 1, 1};
v3 = {2, 2, 2, 2};

and

Scan[Function[v, v[[3]] = newElement, {HoldFirst}], Hold[{v1, v2, v3}],
{2}]

will work.
The point is that Scan[] will evaluate it's second argument and than
you can't set the symbol ist lost. That's why you have to use
Hold[{v1,v2,v3}].
To Scan the arguments of Hold[] you must set the level in Scan[]
explicit.
For your pure function you must also prevent the evaluation with
an explicit attribute. 

Hope that helps
  Jens

Johannes Ludsteck wrote:
> 
> Dear MathGroup members
> 
> I have to do replacements in very long lists. An efficient way to do
> this is to use
> 
> x[[index]]=newElement.
> 
> This, however, doesn't work if I want to do replacements for a set of
> lists. If I try to replace the third element in the lists v1, v2 and v3 by
> typing
> 
> Scan[#[[3]] = newElement &, {v1,v2,v3}]
> I get the error message
> Set::setps: #1 in assignment of part is not a symbol.
> 
> Any suggestions?
> Thanks


  • Prev by Date: Re: A question about pattern matching
  • Next by Date: Re: assumptions question
  • Previous by thread: Re: Set in Scan
  • Next by thread: Re: Set in Scan