Re: Sum pattern
- To: mathgroup at smc.vnet.net
- Subject: [mg128296] Re: Sum pattern
- From: Alexei Boulbitch <Alexei.Boulbitch at iee.lu>
- Date: Fri, 5 Oct 2012 02:50:47 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
Hi, I'm trying to put together a rule whose left hand side is a sum of arbitrar= y length whose elements all have the same head f. For example: In[4]:= x = f[a1, s] + f[a2, s] + f[a3, s] Out[4]= f[a1, s] + f[a2, s] + f[a3, s] In[6]:= y = f[First /@ x, s] Out[6]= f[a1 + a2 + a3, s] which is what I want. However when I turn this into a rule In[7]:= z = x /. (p : Plus[__f]) -> f[First /@ p, s] Out[7]= f[f[a1, s], s] + f[f[a2, s], s] + f[f[a3, s], s] Why isn't z equal to y? How can I make this rule work? Thanks in advance, Dave Snead Hi, Dave, It may be done this way: f[Table[x[[i, 1]], {i, 1, Length[x]}] /. List -> Plus, x[[1, 2]]] f[a1 + a2 + a3, s] or, somewhat shorter, like this: f[First[List @@@ x], x[[1, 2]]] f[a1 + a2 + a3, s] Have fun, Alexei Alexei BOULBITCH, Dr., habil. IEE S.A. ZAE Weiergewan, 11, rue Edmond Reuter, L-5326 Contern, LUXEMBOURG Office phone : +352-2454-2566 Office fax: +352-2454-3566 mobile phone: +49 151 52 40 66 44 e-mail: alexei.boulbitch at iee.lu