Orderless attribute for named functions and function arguments
- To: mathgroup at smc.vnet.net
- Subject: [mg72525] Orderless attribute for named functions and function arguments
- From: "Hannes Kessler" <HannesKessler at hushmail.com>
- Date: Thu, 4 Jan 2007 07:04:24 -0500 (EST)
Dear experts, a way to use the attibute Orderless that works for functions with named arguments in the form of rules is SetAttributes[f,Orderless]; f[ "Named argument 1" -> x_, "Named argument 2" -> y_, "Named argument 3" -> z_]:= Module[{xx, yy, zz}, {xx, yy, zz} = {x, y, z}; (*Do something with xx, yy, zz and return the result*) ...]; Calling the function with arguments in different ways gives identical results. No need to care about the order of the named arguments: f1 = f[ "Named argument 1" -> 1, "Named argument 2" -> 2, "Named argument 3" -> 3]; f2 = f[ "Named argument 2" -> 2, "Named argument 1" -> 1, "Named argument 3" -> 3]; f1 == f2 --> True Now I want an additional dependence of the result on a name of the function in the following form: f[functionName_String][ "Named argument 1" -> x_, "Named argument 2" -> y_, "Named argument 3" -> z_]:= Module[{xx, yy, zz}, {xx, yy, zz} = {x, y, z}; (*Do something with xx, yy, zz*) ...; (*Return the result depending on functionName*) Which[ MatchQ[functionName, "func1"], value1, MatchQ[functionName, "func2"], value2, ...]]; However, it is not possible anymore to assign the attribute Orderless as SetAttributes[f[functionName_String],Orderless]; generates an error message: SetAttributes::sym: Argument f[functionName_String] at position 1 is expected \ to be a symbol. A simple solution is to reverse the definition of f: SetAttributes[f,Orderless]; f[ "Named argument 1" -> x_, "Named argument 2" -> y_, "Named argument 3" -> z_][functionName_String]:=... Is there another way to reach the same goal? Reversing the definition of f is of course completely acceptable in most cases. Nevertheless, in some cases it may preferrable to view f[functionName] as different functions specified by the string functionName, and the arguments to these functions should be given in any order. Thanks in advance, Hannes Kessler
- Follow-Ups:
- Re: Orderless attribute for named functions and function arguments
- From: "Chris Chiasson" <chris@chiasson.name>
- Re: Orderless attribute for named functions and function arguments