Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1999
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1999

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

Search the Archive

Re: List manipulation question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg15984] Re: List manipulation question
  • From: Hartmut Wolf <hw at gsmail01.darmstadt.dsh.de>
  • Date: Fri, 19 Feb 1999 03:27:04 -0500
  • Organization: debis Systemhaus
  • References: <7a2b7v$1t6@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Dear Marten,

Maarten.vanderBurgt at icos.be schrieb:
> 
> Dear all,
> 
> In the following piece of code I define a function Swap23 which is ment
> to swap elements 2 and 3 in a list.
> Executing the function on a simple list I get an error. Why do I get
> this error? Why do I not get this error when I execute the commnad from
> Swap23 "by hand" as is shown in In[4]?
> 
> Thanks for any help
> 
> Maarten van der Burgt
> Icos Vision Systems
> Leuven
> Belgium
> 
> In[1]:=Swap23[L_List]:=Module
> [
>           {temp},
>            temp = L[[2]];
>           L[[2]]=L[[3]];
>           L[[3]] =temp;
>           L
> ]
> 
> In[2]:= mylist = {1,2,3};
> 
> In[3]:= Swap23[mylist]
> 
> Set::"setps": "\!\({1, 2, 3}\) in assignment of part is not a symbol."
> Set::"setps": "\!\({1, 2, 3}\) in assignment of part is not a symbol."
> 
> Out[3]= {1,2,3}
> 
> In[4]:=   temp = mylist[[2]];
>           mylist[[2]]=mylist[[3]];
>           mylist[[3]] =temp;
>           mylist
> 
> Out[4]= {1,3,2}

What you *really* did was the following:

In[6]:=mylist = {1,2,3};

In[7]:=temp = {1,2,3}[[2]]

Out[7]=2

In[8]:={1,2,3}[[2]] = {1,2,3}[[3]]

Set::"setps": "\!\({1, 2, 3}\) in assignment of part is not a symbol."

Out[8]=3

In[9]:={1,2,3}[[3]] =temp

Set::"setps": "\!\({1, 2, 3}\) in assignment of part is not a symbol."

Out[9]=2

In[10]:={1,2,3}

Out[10]={1,2,3}


To understand it define

In[11]:=Swap23[L_]:=Module
      [
          {temp},
           temp = L[[2]];
          L[[2]]=L[[3]];
          L[[3]] =temp;
          L
      ]

In[12]:=mylist = {1,2,3};

In[13]:=Swap23[Unevaluated[mylist]]

Out[13]={1,3,2}

No error! (you can't use Unevaluated if you constrain the argument to a
List!)

your's

Hartmut Wolf, debis Systemhaus, Darmstadt, Germany
    =======[mailto:hwolf at debis.com]=======


  • Prev by Date: Re: MyPrependTo
  • Next by Date: Re: Pure Functions in rules
  • Previous by thread: Re: List manipulation question
  • Next by thread: Notebook -> Kernel