Re: A question about pattern matching
- To: mathgroup at smc.vnet.net
- Subject: [mg21914] Re: A question about pattern matching
- From: Rolf Mertig <rolf at mertig.com>
- Date: Fri, 4 Feb 2000 02:54:43 -0500 (EST)
- Organization: Mertig Research & Consulting
- Sender: owner-wri-mathgroup at wolfram.com
There is nothing wrong with the pattern patcher in Mathematica; maybe it could be made more efficient but I doubt that this is really necessary. Instead people (like book authors) should stop encourage users using these kind of primitive pattern constructions you were trying to do. Everybody should just learn about pure functions and simply use Select or Split (or Cases) : (timings with Mathematica 4.0 on a Linux 433 Celeron machine:) In[1]:= !!mymatch mymatch1[f[x___]] := {Select[{x}, Head[#1] =!= Rule & ], Select[{x}, Head[#1] === Rule & ]}; mymatch2[f[x___]] := Split[{x}, Head[#1] === Rule && Head[#2] === Rule || Head[#1] =!= Rule && Head[#2] =!= Rule & ]; test = f @@ Union[Table[Random[], {kk, 10000}], Table[Random[] -> Random[], {kk, 10000}]]; First /@ {Timing[mymatch1[test]], Timing[mymatch2[test]]} In[1]:= <<mymatch Out[1]= {0.53 Second, 0.83 Second} Rolf ---------------------------- http://www.mertig.com http://www.feyncalc.com http://www.mathdepot.com