Re: Checking function syntax
- To: mathgroup at smc.vnet.net
- Subject: [mg64572] Re: Checking function syntax
- From: dh <dh at metrohm.ch>
- Date: Thu, 23 Feb 2006 00:34:06 -0500 (EST)
- References: <dthh6f$nai$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Chris, your problem can be solved by noting that special definitions are examined before more general ones. Here is an example: Remove[f]; f[a_, b_] := Print["Right number of arguments"]; f[___] := Print["Wrong number of arguments"]; f[1] f[1, 2] f[1, 2, 3] Daniel Chris Rodgers wrote: > Hi, > > How can I make my own functions give an error if they are called with > the wrong syntax? > > For example, if I define this function > > In[37]:= > MyFunc1[x_,y_]:=Tuples[{x,y},2] > > and then Map MyFunc2 over the result > > In[38]:= > Map[MyFunc2,MyFunc1[a,b]] > > I get this (correct, desired) output. > > Out[38]= > {MyFunc2[{a,a}],MyFunc2[{a,b}],MyFunc2[{b,a}],MyFunc2[{b,b}]} > > However, if I inadvertently added a third argument > > In[39]:= > Map[MyFunc2,MyFunc1[a,b,c]] > > then I get this (correct, but undesired) output > > Out[39]= > MyFunc1[MyFunc2[a],MyFunc2[b],MyFunc2[c]] > > I would prefer to get some sort of error message in the second case, > such as the built-in function Sin[...] produces when called with the > wrong number of arguments. > > In[41]:= > Sin[1.] > Out[41]= > 0.841471 > In[42]:= > Sin[2,3] > From In[42]:= > Sin::argx : Sin called with 2 arguments; 1 argument is expected. Out[42]= > Sin[2,3] > > Many thanks, > > Chris. >