       Re: Sum pattern

• To: mathgroup at smc.vnet.net
• Subject: [mg128276] Re: Sum pattern
• From: Bill Rowe <readnews at sbcglobal.net>
• Date: Wed, 3 Oct 2012 23:38:15 -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

```On 10/3/12 at 3:07 AM, dsnead6 at charter.net (Dave Snead) wrote:

>I'm trying to put together a rule whose left hand side is a sum of
>arbitrary length whose elements all have the same head f.

>For example:

>In:= x = f[a1, s] + f[a2, s] + f[a3, s]

>Out= f[a1, s] + f[a2, s] + f[a3, s]

>In:= y = f[First /@ x, s]

>Out= f[a1 + a2 + a3, s]

>which is what I want.

>However when I turn this into a rule

>In:= z = x /. (p : Plus[__f]) -> f[First /@ p, s]

>Out= f[f[a1, s], s] + f[f[a2, s], s] + f[f[a3, s], s]

>Why isn't z equal to y?

Because

In:= x = f[a1, s] + f[a2, s] + f[a3, s];
MatchQ[x, (p : Plus[__f])]

Out= False

>How can I make this rule work?

Try:

In:= x /. Plus[y___] :> f[First /@ y, s]

Out= f(a1+a2+a3,s)

Note the use of RuleDelayed :> rather than Rule ->

```

• Prev by Date: Re: How to lock down a Dynamic object in a report
• Next by Date: Re: Multi Thread in Mathematica (not multi core)
• Previous by thread: Sum pattern
• Next by thread: Re: Sum pattern