Re: Orderless indexed functions
- To: mathgroup at smc.vnet.net
- Subject: [mg20920] Re: [mg20906][mg20874] Orderless indexed functions
- From: Hartmut Wolf <hwolf at debis.com>
- Date: Wed, 1 Dec 1999 01:49:52 -0500 (EST)
- Organization: debis Systemhaus
- References: <001a01bf33e5$bebf5200$86ac153f@satellite>
- Sender: owner-wri-mathgroup at wolfram.com
N Monomachoff schrieb: > > Dear Andrzej Kozlowski, > > I want to thank you for the extraordinary efforts you've expended on this > problem. Had I appreciated how nontrivial my original question was, I > would have been much more explicit: > > Not only do I need pattern matching within the body of the function, I need > to pattern match the index itself, as in the following: > > f[n_][x___,f[0][y___]]:=f[n][x,y] > > The ability to do this is precisely why I chose the indexed form. > Unfortunately, none of the proposed solutions, not even your last, seems to > allow for such definitions. Apparently the Notation package is unable to > stretch this far. Even a definition as simple as: > Dear N Monomachoff, if you need the 'indexes' to f to express recursion relations, while having the Orderless attribute, you might try as follows: Instead of writing f[n_][x___,f[0][y___]]:=f[n][x,y] take the 'index' to the arguments. But of course you can't use a plain number, to do that (at least if you ever have numerical arguments), so wrap it with some marking head, I took capital greek Xi for the example. In[1]:= SetAttributes[f, Orderless] In[2]:= f[x___, f[y___, \[CapitalXi][0]], \[CapitalXi][n_]] := f[x, y, \[CapitalXi][n]] In[3]:= f[\[CapitalXi][3], 7, 5, f[\[CapitalXi][0], 6, 4]] Out[3]= f[4, 5, 6, 7, \[CapitalXi][3]] The standard evaluation procedure will move our tag to the end and such recognize the recursion relation, substitute and proceed further. This works as long as you use numerical arguments and (roman) alphabetical symbols and expressions with such heads. So In[9]:= f[\[CapitalXi][3], t, r, f[\[CapitalXi][0], s, 4, a^2 - b^2], x + y^3 - g[Sqrt[x - \[CapitalOmega][5]]]] Out[9]= f[4, a^2 - b^2, r, s, t, x + y^3 - g[Sqrt[x - \[CapitalOmega][5]]], \[CapitalXi][3]] also should do. Perhaps that will work in your case. Kind regards, Hartmut