MathGroup Archive 2011

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

Search the Archive

Re: Please Help Eliminate My Ignorance

  • To: mathgroup at smc.vnet.net
  • Subject: [mg118571] Re: Please Help Eliminate My Ignorance
  • From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
  • Date: Tue, 3 May 2011 05:46:30 -0400 (EDT)
  • References: <ipm2cl$56f$1@smc.vnet.net>

In 1. because of SetDelayed (:=) the Part ([[ ]]) statement is not
executed directly. It lays dormant until test is called. In 2. Append
and the Part contained in it are executed immediately. Here the
problem with p being not  a List that can be indexed directly leads to
an error message. If you call test in 1. with a argument that is not a
list you get the same error message.


Cheers -- Sjoerd

Mathematica questions also answered at Stackoverflow:
http://stackoverflow.com/questions/tagged/mathematica


May 2, 12:52 pm, Michael Mandelberg <mmandelb... at comcast.net> wrote:
> Why does Mathematica like the first, but not the second?
>
> 1.
> Clear[x, testp, p];
> test[p_] :=  Append[p, p[[4]]];
>
> 2.
> Clear[x, testp, p];
> test[p_] := x = 1; Append[p, p[[4]]];
>
> Part::partd: Part specification p[[4]] is longer than depth of object.
>
>
>
> Append::normal: Nonatomic expression expected at position 1 in
> Append[p,p[[4]]]. >>



  • Prev by Date: Re: Please Help Eliminate My Ignorance
  • Next by Date: RuleDelayed and Integration
  • Previous by thread: Re: Please Help Eliminate My Ignorance
  • Next by thread: Re: Please Help Eliminate My Ignorance