MathGroup Archive 1999

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

Search the Archive

Re: unbelievable ...(continued)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg16632] Re: unbelievable ...(continued)
  • From: "Allan Hayes" <hay at haystack.demon.co.uk>
  • Date: Fri, 19 Mar 1999 12:53:53 -0500
  • References: <7cnl3i$e6f@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

My earlier postinf on this did not show how to do what Antoine wanted.
Here are some ideas - we are touching on some basic features!

Lets start with

a = A[1,2];

We have

x[[1]]=y; where x is a symbol, and, by using x =..  (not x:=...), we have
stored x = expr, where expr has a part 1, changes this stored assignment to
x = (expr with part 1 changed to y) and outputs y. Examples:

a[[1]]=3

    3

a

    A[3,2]

The conditions are essential, for example

A[[1,2]][[1]]=4;
Set::"setps":
    "\!\(A \\[LeftDoubleBracket] \(1, 2\) \\[RightDoubleBracket]\) in \
assignment of part is not a symbol."

a

    A[3,2]

Now for a function:

set1[x,y], below, where x is a symbol for which  by x =..  (not x:=...) we
have stored x = expr, and expr has a part 1, changes this stored assignment
to x = (expr with part 1 changed to y) and outputs y.

We have to give set1 the attribute HoldFirst so that it passes only the name
and avoids the problem just illustrated.

SetAttributes[set1, HoldFirst]

set1[x_,y_] := x[[1]]=y

set1[a,4]

    4

a

    A[4,2]

Two more functions:

set2[x,y] and set3[x,y] below, where the value of x is an expression with
part 1,outputs result of setting first entry in the x to y

set2[x_,y_]:= Block[{t=x},t[[1]]=y;t]

set2[A[1,2],5]

    A[5,2]

set3[x_,y_]:= ReplacePart[x,y,1]

set3[A[1,2],6]

    A[6,2]

These evaluations did not change the value of a:

a

    A[4,2]

Nor will  set2 and set3 change the value of a in the following (a first of
all evaluates to A[4,2], then the evaluation is as abve)

set2[a,5]

A[5,2]

    a

A[4,2]

set3[a,5]

    A[5,2]

a

    A[4,2]

---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565





  • Prev by Date: correction to externalOutput[] function
  • Next by Date: Re: Integration using "shortcut keys"
  • Previous by thread: correction to externalOutput[] function
  • Next by thread: Fitting a piecewise continuous Function