Re: How can I parse arguments of an expression unevaluated?
- To: mathgroup at smc.vnet.net
- Subject: [mg100970] Re: How can I parse arguments of an expression unevaluated?
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Thu, 18 Jun 2009 20:49:23 -0400 (EDT)
- References: <h1cv17$j6v$1@smc.vnet.net>
Erich Neuwirth wrote: > What I would like to have is the following: > I want to give the expression > MyFunArgs[1, 2, a = 3, b = 4] > and I would like to get 3 lists, > the first list has all the arguments which are > not written as an assignment, {1,2} > The second list should be a list of strings > with the names of the variables to be assignes > {"a","b"} > and the third list should be the values to be assigned: > {3,4} > > so > MyFunArgs[1, 2, a = 3, b = 4] > should produce > {{1,2},{"a","b"},{3,4}} > > How can I accomplish this? SetAttributes[MyFunArgs, HoldAll] MyFunArgs[args___] := Join[ {List @@ DeleteCases[Hold[args], _Set]}, Transpose[ Cases[Hold /@ Hold[args], Hold[Set[a_, b_]] :> {ToString[Unevaluated[a]], b}]] ] hth, albert