My understanding is that lookup happens in the imports before moving on to
the search path,  so if I understand you correctly I don't think that is an
issue. If A also *exported* f, that would be a problem...

>From writing R extensions (talking about functions in a package finding
variables, sec 1.6):

The namespace controls the search strategy for variables used by functions
in the package. If not found locally, R searches the package namespace
first, then the imports, then the base namespace and then the normal search
path.


On Thu, Aug 22, 2013 at 4:45 PM, Gabor Grothendieck <ggrothendi...@gmail.com
> wrote:

> On Thu, Aug 22, 2013 at 6:41 PM, Uwe Ligges
> <lig...@statistik.tu-dortmund.de> wrote:
> >
> >
> > On 23.08.2013 00:36, Brian Lee Yung Rowe wrote:
> >>
> >> You raise an interesting point that I've mulled over a bit: namespace
> >> collisions. How many of these issues would go away if there were a
> better
> >> mechanism for managing namespaces? eg in other languages you can control
> >> which objects/modules you wish to import from a library. Under this
> regime I
> >> think package developers would be less concerned about exposing
> functions
> >> that otherwise would be private.
> >
> >
> >
> > Exactly, the corresponding NAMESPACE directive is
> >
> > importFrom()
> >
> > and it should be used.
> >
> >
> >
> >> On Aug 22, 2013, at 6:27 PM, Gabor Grothendieck <
> ggrothendi...@gmail.com>
> >> wrote:
> >>
> >>> If ::: is disallowed then its likely that package developers will need
> >>> to export more functions to satisfy the consumers of those otherwise
> >>> hidden functions but if more functions are exported then there
> >>> will be a greater likelihood of conflicts among packages.
> >>>
> >>> The problem seems to be that there are potentially three sorts of
> >>> functions here:
> >>>
> >>> 1. a function is hidden
> >>> 2. a function is accessible via ::: but is not on the search path
> >>> 3. a function is on the search path
> >>
> >>
> >
> > Not entirely right:
> >
> > If the package or only parts of it are imported via importFrom by another
> > package, the package is not loaded, hence not on the search path.
>
> OK but it is still true that under the new rules to use importFrom(B,
> f) in package A
> that f must be exported by B.  That implies that f could cause a
> conflict when B is
> placed on the search path via library(B) by some other package
> (package C) or by the user.
>
> f is either exported by B or not.  If f is exported by B then f will
> be placed on
> the search path whenever B is placed on the search path and if f is
> not exported then A can't import it.  That is there is no way for B to
> declare a function to be importable by another package without having that
> function also placed on the search path whenever B is loaded by a
> library(B)l or
> a Depends: B from another package.
>
>
>
>
> on the search path
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



-- 
Gabriel Becker
Graduate Student
Statistics Department
University of California, Davis

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to