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