From: Leonid Shifrin on
There is something more to it however - that is, when you enter 3+4I, it
first does have the head Plus (during the parse stage), and only then
changes to Complex (during evaluation stage only). Therefore, we can achieve
the effect in question using evaluation control:

In[1]:= List @@ Unevaluated[3 + 4 I]

Out[1]= {3, 4 I}

In[2]:= FullForm[Unevaluated[3+4I]]

Out[2]//FullForm= Unevaluated[Plus[3,Times[4,\[ImaginaryI]]]]

Regards,
Leonid

On Thu, Jul 1, 2010 at 11:56 PM, Bill Rowe <readnews(a)sbcglobal.net> wrote:

> On 7/1/10 at 8:27 AM, nma(a)12000.org (Nasser M. Abbasi) wrote:
>
> >it seems in the second case, this happens becuase the
> >expression was evaluated first? By holding evaluation, one can
> >get the same result as in the first case:
>
> >List @@ (a + b*I)
> >{a, I*b}
>
> >List @@ (3 + 4*I)
> >3 + 4*I
>
> >ReleaseHold@(List @@ (3 + Hold@4*I))
> >{3,4 I}
>
> Not quite the right explanation. The key is 3 + 4 I isn't an
> expression in the same sense as 3.4 isn't an expression. That is
> it has no parts. It makes no more sense to have List@@(3+4 I)
> yield {3, 4 I} then it does to have List@@{3.4} yield either
> {3.4} or {3, 4}.
>
> By adding Hold, you create a new expression which has parts. Now
> you can use Apply to change this to a list and rid yourself of
> the Hold part using ReleaseHold.
>