Re: basic namespace question, and access to BinarySearch

*To*: mathgroup at smc.vnet.net*Subject*: [mg131611] Re: basic namespace question, and access to BinarySearch*From*: Itai Seggev <itais at wolfram.com>*Date*: Wed, 11 Sep 2013 03:51:13 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: l-mathgroup@wolfram.com*Delivered-to*: mathgroup-outx@smc.vnet.net*Delivered-to*: mathgroup-newsendx@smc.vnet.net*References*: <20130910073347.25F4F6A28@smc.vnet.net>

On Tue, Sep 10, 2013 at 03:33:47AM -0400, Alan wrote: > What is the proper way to get access to a package without adding that > package to $ContextPath? If I use Needs, the package name is added to > $ContextPath. (Of course I can remove items from $ContextPath.) The short answer is there really isn't. In[26]:= BeginPackage["foo`"] In[29]:= EndPackage[] In[30]:= $ContextPath Out[30]= {"foo`", "DocuTools`", "InflationAdjust`", "FormulaData`", \ "QuantityUnits`", "WebServices`", "System`", "Global`"} The moment the package loads it will be added to $ContextPath. > Motivations: 1. I would like a cleaner namespace, and I don't mind using > long names. 2. I would like to avoid the following warning when I want > access just to Combinatorica`BinarySearch. > > General::compat: Combinatorica Graph and Permutations functionality has > been superseded by preloaded functionality. The package now being > loaded may conflict with this. Please see the Compatibility Guide for > details. > > Follow-up questions: > > 1. Mathematiaca documentation currently suggests loading Combinatorica to get BinarySearch: > http://reference.wolfram.com/mathematica/Combinatorica/ref/BinarySearch.html > However if one does so, the above warning is given. It seems to me that > this arrangement is buggy. Is it? It is not ideal, but it is current intended. When version 8 was released, it was deemed that the new Graph functionality was sufficiently advanced and useful to release, but it did not replicate all the functions of combinatorica. A decision was therefore made to keep Combinatorica but deprecate it. With each release more functionality is built into the kernel and eventually combinatorica will be removed. > 2. I am surprised that BinarySearch is not in the Global context. > Am I overlooking similar functionality under another name? > The functionality I seek is the insertion point into a sorted > list that would maintain insertion order, ideally with left/right > option for when the inserted item matches a list item. > (See Pythons binary_search, for example.) I don't think that BinarySearch does what you want; it is much more similar to Position for a list than a tree search algorithm. As for that, I'm not aware of built in functionality. I think you'd have to roll your own solution, since a graphs need not be trees, or even directed/acyclic. Others may know better than I on this specific point. > 3. I see that a BinarySearch function is in the GeometricFunctions package, > which in turn is available by default. But I cannot find any related > documentation. What do I make of this arrangement? GeoemtricFunctions` is an internal package (which probably needs a better name to make this clearer) which is used to support the plotting of splines and such. It is not intended for public consumption. -- Itai Seggev Mathematica Algorithms R&D 217-398-0700

**References**:**basic namespace question, and access to BinarySearch***From:*Alan <alan.isaac@gmail.com>