Re: question on changing 'type' of numbers

• To: mathgroup at smc.vnet.net
• Subject: [mg69485] Re: question on changing 'type' of numbers
• From: dimmechan at yahoo.com
• Date: Thu, 14 Sep 2006 06:54:57 -0400 (EDT)
• References: <ee8h72\$j38\$1@smc.vnet.net>

```***Maybe I am wrong but I think this has to do with atomic expressions.
***You can apply a function to an atomic expression without getting an
error message;
however, in that case you simply get the atom back. E.g.

{h@@2,h@@f,Integer@@z}
{2, f, z}

***You can check if an expression is atomic with AtomQ

Information[AtomQ]
AtomQ[expr] yields True if expr is an expression which cannot be
divided into subexpressions, and yields False otherwise.
InputForm[Attributes[AtomQ] = {Protected}]

AtomQ/@{3,2.1+0.2\[ImaginaryI],"{1,2}",Ï?,{1,2},Sqrt[3]}
{True, True, True, True, False,False}

***However notice the following

Trace[Apply[Real,x],TraceOriginal->True]
{HoldForm[Real @@ x], {HoldForm[Apply]}, {HoldForm[Real]},
{HoldForm[x]}, HoldForm[Real @@ x], HoldForm[x]}

***There is the command HoldPattern (or Literal for older versions of
Mma)

Information[HoldPattern]
HoldPattern[expr] is equivalent to expr for pattern matching, but
maintains expr in an unevaluated form.
InputForm[Attributes[HoldPattern] = {HoldAll, Protected}]

***Then

Trace[Apply[Real,HoldPattern[x]],TraceOriginal->True]
{HoldForm[Real @@ HoldPattern[x]], {HoldForm[Apply]}, {HoldForm[Real]},
{HoldForm[HoldPattern[x]], {HoldForm[HoldPattern]},
HoldForm[HoldPattern[x]]}, HoldForm[Real @@ HoldPattern[x]],
HoldForm[Real[x]], {HoldForm[Real]}, {HoldForm[x]}, HoldForm[Real[x]]}

***So I guess you can get sth relevant to what you want working as
follows

Clear["Global`*"]
Symbol

Integer

Integer

y=Apply[Real,HoldPattern[x]]
Real[x]

Real

***Cheers
Dimitris

Î?/Î? Nasser Abbasi Î­Î³Ï?Î±Ï?Îµ:
> I think of a the Head of expression as its 'type'.
>
> One is supposed to be able to use Apply[f,expr] to change head of expression
> to f.
>
> But Why can't I use this to change the head of a Real number to Integer?
>
> In[122]:=
> Remove["Global`*"]
> x = 0.1
>            -------------->Real
> Apply[Integer,x]
>         ------------------->Real. I was expecting Intger
> x = Integer[x]
>       ----------------> Now it says Integer
>
> any idea?
>
> ofcourse the question as to what should happen to the value of the variable
> if for example I change the head of 0.5 from Real to Integer is another
> matter. It seems in this case x remained 0.1 but only the head said Integer
>
> x
> ----->Integer[0.1]
>
> Now sure what the above really means :)
>
> Nasser

```

• Prev by Date: Re: Re: Re: solve and Abs
• Next by Date: Re: Color names and the 10 elementary colors?
• Previous by thread: Re: question on changing 'type' of numbers
• Next by thread: Re: RE: question on changing 'type' of numbers