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>
- basic namespace question, and access to BinarySearch