MathGroup Archive 1992

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

Search the Archive

Self destructing definitions

  • To: mathgroup at yoda.physics.unc.edu
  • Subject: Self destructing definitions
  • From: LELMA at basin.crc.uno.edu
  • Date: Mon, 9 Mar 1992 14:14 CST

A colleague of mine is having the following problem with definitions that seem
to overwrite each other:

In[1]:=
     rowOp[A_?MatrixQ,c_opcode] :=
	 (A[[c[[2]]]] = A[[c[[2]]]] c[[3]]
	/; c[[1]] == 1)

In[2]:=	
     rowOp[A_?MatrixQ,c_opcode] :=
	(A[[c[[2]]]] = A[[c[[2]]]] + c[[3]] A[[c[[4]]]]
		/; c[[1]] == 3)

(*  We now find the first definition has been overwritten by the second. *)

In[3]:= ?rowOp

Out[3]=
    rowOp
    rowOp/: rowOp[(A_)?MatrixQ, c_opcode] := 
 
       A[[c[[2]]]] = 
 
        A[[c[[2]]]] + c[[3]] A[[c[[4]]]] /; c[[1]] == 3

(*   If the first definition is now repeated, it in turn overwrites the second 
definition.  *)

In[4]:=  rowOp[A_?MatrixQ,c_opcode] :=
	 (A[[c[[2]]]] = A[[c[[2]]]] c[[3]]
		/; c[[1]] == 1)

In[5]:=  ?rowOp

Out[5]=  rowOp
       rowOp/: rowOp[(A_)?MatrixQ, c_opcode] := 
        A[[c[[2]]]] = A[[c[[2]]]] c[[3]] /; c[[1]] == 1



  In the original source of this problem, the function rowOp had the 
attribute  HoldFirst.  The above shows that this is not needed to produce the 
problem.  Changing the name of the pattern c to something else in one or the 
other definition allows both to coexist. 

What's going wrong?
Any help would be appreciated,  Thanks.

Lew Lefton
Department of Mathematics
University of New Orleans
New Orleans, Louisiana  70148
Phone:          (504) 286-6331
E-mail address:  lelma at uno.edu  (OR lelma at uno.bitnet)





  • Prev by Date: RE: Partial Fraction Decomposition with imaginary coeff.
  • Next by Date: finding roots of user defn. functions
  • Previous by thread: Symbolic integration of piecewise defined functions
  • Next by thread: finding roots of user defn. functions