Re: Named Patterns in Switch

*To*: mathgroup at smc.vnet.net*Subject*: [mg48961] Re: Named Patterns in Switch*From*: "Peltio" <peltio at twilight.zone>*Date*: Fri, 25 Jun 2004 02:58:31 -0400 (EDT)*References*: <cbe8ta$svc$1@smc.vnet.net>*Reply-to*: "Peltio" <peltioNOSP at Mdespammed.com.invalid>*Sender*: owner-wri-mathgroup at wolfram.com

"David Park" wrote >Here is an attempted routine using Switch that does not work. > > foo[expr_] := > Switch[expr, > (a_.)*x^(n_), a, > (a_.)*y^(n_), n] > foo[3*x^3] > a (I was hoping for 3) > >Switch uses patterns, but any named patterns are useless. So the a in the third argument in Switch has nothing to do with the a_. in the second argument. Sadly True. >Is there some Mathematica construction that will test successive patterns with names, do a calculation with the first match and use the names in the patterns? A list of rules, maybe. foo[expr_] := expr /. {a_.*x^n_ -> a, a_.*y^n_ -> n} We can stuff the rules into Switch if we like: foo[expr_] := Switch[expr, a_.*x^n_, expr /. a_.*x^n_ -> a, a_.*y^n_, expr /. a_.*y^n_ -> n ] It does not look elegant, but it should do its dirty work nonetheless. cheers, Peltio Invalid address in reply-to. Crafty demunging required to mail me.