From berwin at maths.uwa.edu.au  Tue Nov 16 08:59:33 2010
From: berwin at maths.uwa.edu.au (Berwin A Turlach)
Date: Tue, 16 Nov 2010 15:59:33 +0800
Subject: [Rd] Trying to understand the search path and namespaces
In-Reply-To: <AANLkTi=BsP2mE8avreNMBx_P-ORcEhRB_mK0-k8fFTpq@mail.gmail.com>
References: <AANLkTin090pRti8dXknLKtpFmUmmvRsAz6a0V2mx5iOM@mail.gmail.com>
	<AANLkTi=3K0T7qzQnRU-Q8h3RVTDS+UQ5CmcOs4xZJYfD@mail.gmail.com>
	<AANLkTikPE5acZ6CKJeoq9RpphUJffr4W8Lm_8c7O7i08@mail.gmail.com>
	<AANLkTimckaNaUb6SjY=njVZuRSa1iJ+4entWVA2ghBxD@mail.gmail.com>
	<4CE1DE06.9060809@fhcrc.org>
	<AANLkTi=BsP2mE8avreNMBx_P-ORcEhRB_mK0-k8fFTpq@mail.gmail.com>
Message-ID: <20101116155933.41901966@bossiaea>

G'day Hadley,

On Mon, 15 Nov 2010 19:45:30 -0600
Hadley Wickham <hadley at rice.edu> wrote:

> > 1.6 of Writing R Extensions says
> >
> > Note that adding a name space to a package changes the search
> > strategy. The package name space comes first in the search, then
> > the imports, then the base name space and then the normal search
> > path.
> >
> > I'm not sure of the details, but I think
> >
> > ?parents(getNamespace("devtools"))
> 
> Ah, my mistake was assuming that the package namespace and environment
> were the same thing.
> 
> Interestingly the namespace is dynamic:

Not sure what you mean with this.  Section 1.6 of "Writing R
Extensions" explicitly states:

	Name spaces are @emph{sealed} once they are loaded.  Sealing
	means that imports and exports cannot be changed and that
	internal variable bindings cannot be changed.

> > parents(getNamespace("devtools"))
> ...
> [31] "base"
> > library(roxygen)
> > parents(getNamespace("devtools"))
> ...
> [31] "Autoloads"            "base"

Well, as the part of "Writing R Extensions" that Martin quoted states,
the normal search path is part of the search path used by packages with
name spaces.  So if you attach another package via library(), the
normal search path changes and, hence,
`parents(getNamespace("devtools"))' has one more location to report.

Cheers,

	Berwin



[Rd] Trying to understand the search path and namespaces
Berwin A Turlach