overloading a function name in a package? How to query all names?
- To: mathgroup at smc.vnet.net
- Subject: [mg110789] overloading a function name in a package? How to query all names?
- From: "Nasser M. Abbasi" <nma at 12000.org>
- Date: Tue, 6 Jul 2010 05:03:27 -0400 (EDT)
- Reply-to: nma at 12000.org
Hello;
I have package where I overloaded the same function name, defined to
accept different arguments. as follows:
-------------------
BeginPackage["foo`"]
boo1::usage="call me as follows: boo1[a,b]"
boo1::usage="call me as follows: boo1[a]"
Begin["`Private`"]
boo1[a_,b_]:=Module[{},Print["in v1 of boo1"]];
boo1[a_]:=Module[{},Print["in v2 of boo1"]];
End[]
EndPackage[]
--------------------------------
Now, I do
<<foo`
And I can call either of them OK
boo1[1,2]
boo1[1]
But when I do
Names["foo`*"]
It only shows name boo1 once. (I can understand this*)
And when I do
?foo`*
It only list boo1 once. It seems to show the ::usage of the last one.
OK. I can understand this.
But, then, is there a way to show the user than I have more than one
version of the same function name in the package? Without having to look
into the package file?
I'd like to overload the function name, since I need to call it
differently sometimes, and I do not want to make up new names of the
same function, as in booV1[], booV2[], etc... since they all do the same
logical action, but accept different arguments depending on the options
needed, and so they all just have the same name, and the correct version
will be called depending on the arguments used.
Overloading works OK when calling. I am just asking on how to show that
I have more than one function of the same name in the package, so I know
how to call each one.
I looked a the docs, but so far, did not see anything. will keep looking....
thanks
--Nasser