Re: Holding Arguments in a Second Argument List

*To*: mathgroup at smc.vnet.net*Subject*: [mg32259] Re: [mg32238] Holding Arguments in a Second Argument List*From*: Andrzej Kozlowski <andrzej at tuins.ac.jp>*Date*: Wed, 9 Jan 2002 23:37:14 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

I can't see a way to do what you want in the first part of your message (assign attributes for sub-arguments) but as for the second one way that will work is: In[1]:= foo[mathgroup_] := Function[mat, Module[{}, Do[If[Not[mathgroup === great], Return[$Failed]],{1}] ], {HoldFirst}] e.g. In[2]:= foo[x][mat] Out[2]= $Failed Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ On Wednesday, January 9, 2002, at 05:17 PM, David Park wrote: > 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/ > > > >