Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1994
*January
*February
*March
*April
*May
*June
*July
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1994

[Date Index] [Thread Index] [Author Index]

Search the Archive

same options for 30 functions?

  • To: mathgroup at yoda.physics.unc.edu
  • Subject: same options for 30 functions?
  • From: wmm at chem.wayne.edu (Martin McClain)
  • Date: Tue, 22 Mar 94 14:26:19 EST

Dear mathgroup- 
The short version of my question:  Is there any graceful way to provide a
default option for 30 or more functions in a package?   I want to let the
user change defaults in the middle of a run, via SetOptions or some similar
operator.

The long version:  Consider a package function defined as

f[a_, b_, g_String:$GroupName]:= whatever

where g_String:$GroupName appears at the end of the argument list for
nearly every function in the package, some 30 or 40 of them.  $GroupName is
a Global` variable that is assigned before initialization of the package. 
For example, one might set  $GroupName = "C3v".  Thus the user does not
have to say f[a,b,"C3v"] every time-  f[a,b] will do the job, with the
default "C3v" understood.

Here is the problem:  You cannot change the default groupname in the middle
of a run. You can change $GroupName, but it has no effect, because its
value was used at the time the functions were defined, and it is never
consulted again.  I would like to write

f[a_, b_, g_String:(delayed assignment of $GroupName)]:= whatever

but I have not been able to cook up any way to accomplish this.  If the
assignment of $GroupName could be delayed, function f would pick up the new
value on each use, and changes in $GroupName would be meaningful.

I have read enough standard packages to know how to program a standard Mma 
option (like Trig->True) for a function , but for 30 functions with the
same option the standard route seems quite ugly-  every function would be
split into three nested functions, with useful operations going on in only
the innermost totally private function.  This would almost double the size
of the package, just to accomplish what seems like a simple little task.

Any ideas?  

Thanks, Martin McClain, Chemistry Dept., Wayne State Univ, Detroit






  • Prev by Date: January competition results
  • Next by Date: Re: Writing Lists to files
  • Previous by thread: January competition results
  • Next by thread: Re: same options for 30 functions?