Re: How to get non-printing heads?
- To: mathgroup at smc.vnet.net
- Subject: [mg46980] Re: How to get non-printing heads?
- From: Mike <m.HoneychurcNOSPAMh at uq.edu.au>
- Date: Thu, 18 Mar 2004 01:25:16 -0500 (EST)
- Organization: University of Queensland
- References: <c388k0$bnb$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Use Apply.
In[]:={a,b,c}//Head
Out[]=List
In[]:=Plus@@{a,b,c}//Head
Out[]=Plus
In[]:=yourHead@@{a,b,c}//Head
Out[]=YourHead
Cheers
Mike
On 17/3/04 11:11 AM, in article c388k0$bnb$1 at smc.vnet.net, "kj"
<socyl at 987jk.com> wrote:
>
> How can I give a Mathematica object a different head?
>
> I tried
>
> In[1]:= Head[a] ^= Constant;
>
> But, as shown below, this doesn't work as desired:
>
> In[2]:= MatchQ[a, _Constant]
>
> Out[2]= False
>
> In[3]:= MatchQ[a, _Symbol]
>
> Out[3]= True
>
> I even tried
>
> In[4]:= a/: MatchQ[a, _Constant] = True;
>
> In[5]:= ??a
> Global`a
>
> Head[a] ^= Constant
>
> a /: MatchQ[a, _Constant] = True
>
> ...but
>
> In[6]:= MatchQ[a, _Constant]
>
> Out[6]= False
>
> Is there any way to give "a" a user-defined head?
>
> My immediate goal is to be able to define functions that perform
> algebraic manipulations on Mathematica expressions according to
> the types of the objects they contain. I want to leave these
> objects pretty much undefined, other than specifying their types.
> E.g.:
>
> myDerivative[x_Constant] := 0;
>
> myDerivative[a]
>
> ==> 0
>
> myDerivative[b]
>
> ==> myDerivative[b] (* Derivative doesn't know how to handle Symbol *)
>
> TIA,
>
> kj