Prev: SQL question, Can I do something like Rest[] and Most[]
Next: Lauching application from an icon
From: Carl K. Woll on 11 Jun 2010 07:58 On 6/11/2010 2:09 AM, telefunkenvf14 wrote: > Group: > > My goal is to generate a list of symbolic parameters that other > functions in a package can Map[] over. For sake of example, suppose I > define the following 'utility' function as part of a larger package. > > In[1]:= ClearAll["Global`*"] > In[2]:= shares[n_?IntegerQ/;n>0,s_Symbol: > s]:=Module[{i},Table[Symbol[ToString[s]<>ToString[i]],{i,n}]] > In[3]:= shares[2] > > Out[3]= {s1,s2} > > I would now like to include the attribute Constant to each of the > s1, ..., sn generated. What is the best way to do this? > My gut tells me that ideally I'd want to do this inside the shares[] > function itself, but I couldn't figure out how. The workaround I've > been toying with is to define another utility function: > > In[4]:= setConstants[vars_]:=SetAttributes[#,Constant]&@vars > > This seems to work ok...But does anyone see potential pitfalls with > this approach? > > In[5]:= setConstants[shares[2]] > In[6]:= Attributes[s1] > In[7]:= Attributes[s2] > > Out[6]= {Constant} > Out[7]= {Constant} > > -RG > > If the symbol you are creating already has a value, then SetAttributes won't work. Do the symbols need to always start with 1? If not, then using something like: Table[ Unique["s", Constant], {10}] might be a possibility. Carl Woll Wolfram Research
From: Bob Hanlon on 11 Jun 2010 07:58 shares[n_Integer?Positive, s_Symbol: s] := Module[{var}, var = Table[ Symbol[ToString[s] <> ToString[i]], {i, n}]; SetAttributes[#, Constant] & /@ var; var] shares[3] {s1,s2,s3} Attributes /@ % {{Constant}, {Constant}, {Constant}} Bob Hanlon ---- telefunkenvf14 <rgorka(a)gmail.com> wrote: ============= Group: My goal is to generate a list of symbolic parameters that other functions in a package can Map[] over. For sake of example, suppose I define the following 'utility' function as part of a larger package. In[1]:= ClearAll["Global`*"] In[2]:= shares[n_?IntegerQ/;n>0,s_Symbol: s]:=Module[{i},Table[Symbol[ToString[s]<>ToString[i]],{i,n}]] In[3]:= shares[2] Out[3]= {s1,s2} I would now like to include the attribute Constant to each of the s1, ..., sn generated. What is the best way to do this? My gut tells me that ideally I'd want to do this inside the shares[] function itself, but I couldn't figure out how. The workaround I've been toying with is to define another utility function: In[4]:= setConstants[vars_]:=SetAttributes[#,Constant]&@vars This seems to work ok...But does anyone see potential pitfalls with this approach? In[5]:= setConstants[shares[2]] In[6]:= Attributes[s1] In[7]:= Attributes[s2] Out[6]= {Constant} Out[7]= {Constant} -RG
|
Pages: 1 Prev: SQL question, Can I do something like Rest[] and Most[] Next: Lauching application from an icon |