MathGroup Archive 2006

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

Search the Archive

Re: Programming with options.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg68088] Re: Programming with options.
  • From: Bill Rowe <readnewsciv at earthlink.net>
  • Date: Sat, 22 Jul 2006 06:24:11 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

On 7/21/06 at 5:37 AM, maxart.yZEROSPAM at tiscali.it (MaxArt) wrote:

>I want to create some new functions in Mathematica (4.0), and I
>want it to work with options like Plot and other graphic functions.
>The idea behind this is to modify the result and the behaviour of my
>functions when extra arguments are given, and I thought that the use
>of options would be perfect. For example, if I want to create a
>function Pow that gives the square of a number, except when an
>option Exponent is given, so that Pow[a, Exponent -> 3] yields a^3.

>How can I do that?

Here is a simple example,

First, I will define the default option

In[24]:=
Options[distance]={Method->Euclidean};

Next define the function

In[25]:=
distance[x_, y_, opts___] :=
  Norm[{x, y}, Method /. {opts} /. Options[distance] /. {
    Euclidean->2, Absolute->1, Method->2]

Here the triple blank represents a sequence of 0 or more parameters named opts

Now, evaluating the function can be done as follows:

In[26]:=
distance[{1,2},{2,3}]

Out[26]=
Sqrt[9 + 4*Sqrt[5]]

In[27]:=
distance[{1,2},{2,3},Method->Absolute]

Out[27]=
5

The replacement rules in the function definition are designed to first apply user specified rules. If these do not contain a replacement rule for Method, Options[distance] evaluates to the default option for distance. Next, the allowed options are replaced with values acceptable to Norm. The last rule Method->2 ensures Norm gets a valid value for the second argument when no default option for distance is defined.
--
To reply via email subtract one hundred and four


  • Prev by Date: Re: Applying a list of 2D paramters to a mathematica function
  • Next by Date: RE: Using variables in packages
  • Previous by thread: Re: Programming with options.
  • Next by thread: Applying a list of 2D paramters to a mathematica function