Re: rhs of SetDelayed
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1599] Re: rhs of SetDelayed
- From: rubin at msu.edu (Paul A. Rubin)
- Date: Tue, 4 Jul 1995 01:28:26 -0400
- Organization: Michigan State University
In article <3stisq$oee at news0.cybernetics.net>,
c7081naa at c1.cc.univie.ac.at (Michael Probst) wrote:
->Hi !
->I have the following question:
->
->I have to define a few functions that take the same arguments.
->Therefore I don't want to write the list of agguments repeatedly
->and use a variable instead.
->The following approach:
->
->lhsArg={a1_,a2_,a3_,a4_};
->rhrArg={a1,a2,a3,a4};
->f[lhsArg]:=g[rhsArg];
->
->does not work. The left side is o.k. but since rhsArg is not
->converted to {a1,a2,a3,a4} the right side is not.
->How does one do this ?
->
->Thanks a lot !
->Michael
->michael.probst at uibk.ac.at
->
You want $PreRead, which preprocesses input lines:
In[]:= $PreRead =
StringReplace[ #,
{"lhsArg" -> "a1_,a2_,a3_,a4_",
"rhsArg" -> "a1,a2,a3,a4"} ]&;
In[]:= f[lhsArg]:=g[rhsArg];
In[]:= ?f
Out[]= Global`f
f[a1_, a2_, a3_, a4_] := g[a1, a2, a3, a4]
In[]:= f[1,2,3,4]
Out[]= g[1, 2, 3, 4]
In[]:= $PreRead =. (* clears $PreRead *)
I was not sure if you literally wanted a single list as the argument or if
you really meant to use a *sequence* of arguments. The latter is
demonstrated above; for the former, just add braces ({}) inside the quotes
in StringReplace.
Paul
**************************************************************************
* Paul A. Rubin Phone: (517) 432-3509 *
* Department of Management Fax: (517) 432-1111 *
* Eli Broad Graduate School of Management Net: RUBIN at MSU.EDU *
* Michigan State University *
* East Lansing, MI 48824-1122 (USA) *
**************************************************************************
Mathematicians are like Frenchmen: whenever you say something to them,
they translate it into their own language, and at once it is something
entirely different. J. W. v. GOETHE