Holding Arguments in a Second Argument List

*To*: mathgroup at smc.vnet.net*Subject*: [mg32238] Holding Arguments in a Second Argument List*From*: "David Park" <djmp at earthlink.net>*Date*: Wed, 9 Jan 2002 03:17:32 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

Dear MathGroup, I have a series of procedures which manipulate a matrix. I like to define them in this fashion. function[args___][matrix_] := ... because then I can write lines like matrix // function[args...] etc. But I have to define the function so that matrix is held, and I don't want to write Unevaluated with every use. But Attributes = {HoldFirst} only applies to the first argument list. Is there a direct way to define the attributes of a second argument list? In any case, I write the routines this way. function[args___]:= Function[matrix, Module[{}, code], {HoldFirst}] and that works. The code usually changes the matrix and I display it separately. But sometimes the operation will fail and then I would like function[args...][matrix] to return $Failed. But I am unable to do that. The best I seem to be able to do is return Return[$Failed]. Here is a sample routine which just tries to return $Failed. foo[mathgroup_] := Function[mat, Module[{}, If[Not[mathgroup === great], Return[$Failed]]], {HoldFirst}] foo[x][mat] Return[$Failed] Can anyone tell me how to get rid of the Return wrapper? Thanks David Park djmp at earthlink.net http://home.earthlink.net/~djmp/