Re: is Head[] part of the expression?

• To: mathgroup at smc.vnet.net
• Subject: [mg126897] Re: is Head[] part of the expression?
• From: "Nasser M. Abbasi" <nma at 12000.org>
• Date: Fri, 15 Jun 2012 15:31:14 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com

```On 6/15/2012 11:53 AM, A. Retey wrote:

> to get the expected behaviour, use an explicit level specification and Heads option, e.g.:
>
> Position[{1, 2, 3}, _, {1}, Heads ->  False]
>

That is good option to use. But it does not seem to be accepted
by all functions:

--------------------------------
mat = {{0, 0, 1}, {10, 0, 2}, {3, 4, 0}};
sp  = SparseArray[mat];
pos = sp["NonzeroPositions", Heads -> False] (*does NOT work*)
---------------------------------

but

------------------------------------
pos=sp["NonzeroPositions"]  (*works*)
Out[46]= {{1,3},{2,1},{2,3},{3,1},{3,2}}
---------------------------------

and

--------------------------
v1 = {a, b, c};
v2 = {e, f, g};
Outer[Times, v1, v2, Heads -> False]  (*error*)
-----------------------

and

-------------------------------------
A = {{50, 75, 0}, {50, 0, 100}, {0, 75, 100},
{75, 100, 0}, {0, 75,100}, {0, 75, 100}};

ReplacePart[A,
DeleteDuplicates[
Position[A, _?(# != 0 &)], (#1[[1]] == #2[[1]] &)] -> -1,
-----------------------------------

> Whether Heads are looked at and which levels are looked at by default depends
>on the function you use, there is no common convention that they all behave
>the same. This seems o.k. since there is a different useful default
>depending on what these functions do. I found it saved me from many
>surprises and made my code more robust to include explicit level
>specifications as much as I can...
>
> hth,
>
> albert
>

So, I guess the rule of thumb I'll add to my cheat sheet is like this:

2. If the Mathematica function does not like Heads option,
then do not use it (make a notes of such functions, should
not be many of them)

I just think this now adds a bit more complexity if one has to
expression. I think Head of expression should not be
looked at, unless by explicit call or explicit option.

Thanks to all the replies.

thanks,

--Nasser

```

• Prev by Date: Re: Bug in NIntegrate[]?
• Next by Date: Re: modulo solving lacking domain?