MathGroup Archive 2002

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

Search the Archive

Re: Help: Why no output?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg34951] Re: [mg34941] Help: Why no output?
  • From: BobHanlon at aol.com
  • Date: Sat, 15 Jun 2002 02:27:33 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

In a message dated 6/14/02 3:18:53 AM, kzhang at flashmail.com writes:

>The behavior of the following function is puzzling to me:
>
>In[1]:=f[x_, n___Integer] := If[Length[{n}] == 1, n  , Length[x]]
>In[2]:=f[0.5]  (* Nothing returned. *)
>In[3]:=f[{1,2}] (* Nothing returned. The length of x should be
>returned *)
>(* However, with the modification to f, everything works as intended
>*)
>In[4]:=f[x_, n___Integer] := If[Length[{n}] == 1, 1*n  , Length[x]]
>                                                 ^^^^^^
>In[5]:=f[0.5]
>Out[5]:=0
>In[6]:=f[{1,2}]
>Out[6]:=2         
>
>Could anyone help me understand why changing n to (1*n) in the If[]
>statement makes such difference? Why doesn't f[] defined in the In[1]
>work?

Use Trace to see what happens

f[x_, n___Integer] := If[Length[{n}]==1, n, Length[x]];

Trace[f[0.5]]

{f[0.5], If[Length[{}]==1, Length[0.5]], {{Length[{}], 0}, 0==1, False},
  If[False, Length[0.5]], Null}

f[x_, n___Integer] := If[Length[{n}]==1, 1*n, Length[x]];

Trace[f[0.5]]

{f[0.5], If[Length[{}]==1, Times[1], Length[0.5]], {{Length[{}], 0}, 0==1, 
False},
  If[False, Times[1], Length[0.5]], Length[0.5], 0}



Bob Hanlon
Chantilly, VA  USA


  • Prev by Date: Re: Nonlinear Programming?
  • Next by Date: Re: Help: Why no output?
  • Previous by thread: Re: Help: Why no output?
  • Next by thread: RE: Help: Why no output?