MathGroup Archive 2011

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

Search the Archive

Re: Part // interesting undocumented feature

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122699] Re: Part // interesting undocumented feature
  • From: David Bailey <dave at removedbailey.co.uk>
  • Date: Sun, 6 Nov 2011 05:57:11 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j930uu$a9g$1@smc.vnet.net>

On 05/11/2011 09:51, Scot T. Martin wrote:
> A colleague new to Mathematica showed me something that I thought should cause an error:
>
> Part[data[[All,1]]]
>
> Of course, I thought the form should just be "data[[All,1]".
>
> It turns out that there is form of Part that works like an identity function:
>
> In[1]:= Part[5]
> Out[1]= 5
>
> Just out of a Mathematica trivia challenge question, can anyone think of an example when this undocumented syntax of Part[ ] could possibly be of use or why the programmers have it as an acceptable syntax?
>
>
>
I was not aware of this, but it makes sense.

It is the limiting case of the construction Part[expr,i,j,k....] - the 
case where no part specifiers are supplied.

Usually this sort of feature is included to avoid having to perform 
special tests for end conditions. For example:

In[673]:= pp={1,2};
expr={{a,b},{c,d}};

Part[expr,Sequence@@pp]

Out[675]= b

In[677]:= pp={1};

In[678]:= Part[expr,Sequence@@pp]

Out[678]= {a, b}

In[680]:= pp={};

In[681]:= Part[expr,Sequence@@pp]

Out[681]= {{a, b}, {c, d}}

Thus the case pp={} does not need to be handled as a special case.

David Bailey
http://www.dbaileyconsultancy.co.uk




  • Prev by Date: Re: Import files on accessible URL and save in local machine.
  • Next by Date: Re: How to evaluate parts of an expression, but not other parts?
  • Previous by thread: Part // interesting undocumented feature
  • Next by thread: How to evaluate parts of an expression, but not other parts?