Re: [Rd] Shouldn't "Loading" be "Attaching" when referring to library() calls?

2023-01-10 Thread Martin Maechler
> Martin Maechler 
> on Tue, 10 Jan 2023 10:26:53 +0100 writes:

> Michael Chirico via R-devel 
> on Mon, 9 Jan 2023 12:25:46 -0800 writes:

>> require() and library() both emit this message immediately before
>> running library():

>> "Loading required package: %s"

>> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L967-L968

>> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L684-L685

>> Shouldn't "Loading" be "Attaching" instead?

> Good question... I had asked myself as well a couple of times.

> The vagueness is mostly "historical" in the sense that
> originally R (nor S) had namespaces.

Oops!  If you skip the "( .. )" above it's 100% wrong.
Correct (I hope even according Oxford Dictionary) is

" Originally, neither R nor S had namespaces. "



> OTOH,  attach(.)  has always worked for data frames (already in pre-R S).

> Still, I agree (when teaching and otherwise), we should
> clearly distinguish the two notably in the context of packages
> and their namespaces.


>> My understanding is "a package is loaded" is equivalent to
>> "isNamespaceLoaded()", i.e., loadNamespace() was run. And that "a
>> package is attached" is equivalent to "pkg %in% .packages()", i.e.,
>> library(pkg) was run.

> or (easier for teaching)  that  "package:" %in% search()
> -- which is what .packages() does {by default}.

> I agree with the above.


>> Is the terminology not so precise?

>> There's certainly ambiguity in the internal variable names referenced
>> above -- in require, we see

>> loaded <- paste0("package:", package) %in% search()
>> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L680

> again, historical:  require() exists for considerably longer
> than namespaces.

> I think we should at least change the message printed by
> require() and library() you mentioned above.

> Martin


>> Whereas in library() [via .getRequiredPackages2()] we see

>> attached <- paste0("package:", pkg) %in% search()
>> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L931

>> Mike C

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

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


Re: [Rd] Shouldn't "Loading" be "Attaching" when referring to library() calls?

2023-01-10 Thread Martin Maechler
> Michael Chirico via R-devel 
> on Mon, 9 Jan 2023 12:25:46 -0800 writes:

> require() and library() both emit this message immediately before
> running library():

> "Loading required package: %s"

> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L967-L968

> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L684-L685

> Shouldn't "Loading" be "Attaching" instead?

Good question... I had asked myself as well a couple of times.

The vagueness is mostly "historical" in the sense that
originally R (nor S) had namespaces.
OTOH,  attach(.)  has always worked for data frames (already in pre-R S).

Still, I agree (when teaching and otherwise), we should
clearly distinguish the two notably in the context of packages
and their namespaces.


> My understanding is "a package is loaded" is equivalent to
> "isNamespaceLoaded()", i.e., loadNamespace() was run. And that "a
> package is attached" is equivalent to "pkg %in% .packages()", i.e.,
> library(pkg) was run.

or (easier for teaching)  that  "package:" %in% search()
-- which is what .packages() does {by default}.

I agree with the above.


> Is the terminology not so precise?

> There's certainly ambiguity in the internal variable names referenced
> above -- in require, we see

> loaded <- paste0("package:", package) %in% search()
> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L680

again, historical:  require() exists for considerably longer
than namespaces.

I think we should at least change the message printed by
require() and library() you mentioned above.

Martin


> Whereas in library() [via .getRequiredPackages2()] we see

> attached <- paste0("package:", pkg) %in% search()
> 
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L931

> Mike C

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


[Rd] Shouldn't "Loading" be "Attaching" when referring to library() calls?

2023-01-09 Thread Michael Chirico via R-devel
require() and library() both emit this message immediately before
running library():

"Loading required package: %s"

https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L967-L968

https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L684-L685

Shouldn't "Loading" be "Attaching" instead?

My understanding is "a package is loaded" is equivalent to
"isNamespaceLoaded()", i.e., loadNamespace() was run. And that "a
package is attached" is equivalent to "pkg %in% .packages()", i.e.,
library(pkg) was run.

Is the terminology not so precise?

There's certainly ambiguity in the internal variable names referenced
above -- in require, we see

loaded <- paste0("package:", package) %in% search()
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L680

Whereas in library() [via .getRequiredPackages2()] we see

attached <- paste0("package:", pkg) %in% search()
https://github.com/r-devel/r-svn/blob/4198a2941b702d965bb2374c2b908f48c369f40a/src/library/base/R/library.R#L931

Mike C

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