MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: extracting list of arguments of function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg16485] Re: extracting list of arguments of function
  • From: "Allan Hayes" <hay at haystack.demon.co.uk>
  • Date: Tue, 16 Mar 1999 03:59:41 -0500
  • References: <7cd7td$o8m@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Jerzy Niesytto wrote in message <7cd7td$o8m at smc.vnet.net>...
>Let's assume that we want to pass function goo as argument
>to another function foo and extract list of arguments
>of the function goo:
>foo[fun_] := Module[{argList}, argList = Table[fun[[i]],{i,1,2}] ]
>foo[goo[x,y]];
>
>This will result in list:
>{x,y}
>
>But if goo was defined before eg:
>goo[s_,t_] = s^2 + t^3;
>
>then we get:
>{x^2,y^3} .....
>
>Can anybody point me in a right direction here?
>Sorry for such an elementary question...
>
>JT
>

Jerzy:

Stop goo[x,y] from evaluating inside foo

SetAttributes[foo, HoldFirst]

Use Hold to stop it evaluatinfg after being passed, then get its arguments
using Level

foo[fun_] := Level[Hold[fun],{2}]

goo[x_,y_]:= x^2+y^2

foo[goo[x,y]]

    {x,y}

If you want to prevent the arguments from evaluating:


SetAttributes[foo2, HoldFirst]
foo2[fun_] := Level[Map[HoldForm,Hold[fun],{2}],{2}]

x=2;y=3;

foo2[goo[x,y]]

    {x,y}

HoldForm is invisible, but we can see it in FullForm
FullForm[%]

    List[HoldForm[x],HoldForm[y]]

Allan

---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565





  • Prev by Date: Seperate input and output in mathematica
  • Next by Date: Re: Date in Footers
  • Previous by thread: Re: Seperate input and output in mathematica
  • Next by thread: Limits and principal value integrals