MathGroup Archive 2012

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

Search the Archive

How to call 'Clear' from within a function?


Before trying to encapsulate 'Clear' in a function, I try this:

Clear [ x ] ;
x
x = 2
Clear [ ToString [ Unevaluated [ x ] ] ] ;
x

And I expect to get three  lines of output:   x, 2, and x
But instead I get these three lines output:  x, 2 and 2.

What do I misunderstand, or need to know?

I observe that a function CAN obtain the name of a symbol passed to it:

ClearAll [ f ] ;
SetAttributes [ f, HoldFirst ] ;
f [ arg_ ] := ( Print [ Unevaluated [ arg ] ] ;
  Clear [ ToString [ Unevaluated [ arg ] ] ] ) ;
x = 2; (* assign a value to  'x' *)
f [ x ] ;  (* 'f' can print the symbol 'x' ! *)
x  (* but 'x' still has value '2' ; the 'Clear' had no effect !? *)

Similar problems with trying to call 'Set' from within a function....


  • Prev by Date: Re: Simply but handy question
  • Next by Date: Re: Simply but handy question
  • Previous by thread: boundary condition in VariationalBound
  • Next by thread: Re: How to call 'Clear' from within a function?