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