From m@ech|er @end|ng |rom @t@t@m@th@ethz@ch  Tue Jan 10 11:31:40 2023
From: m@ech|er @end|ng |rom @t@t@m@th@ethz@ch (Martin Maechler)
Date: Tue, 10 Jan 2023 11:31:40 +0100
Subject: [Rd] 
 Shouldn't "Loading" be "Attaching" when referring to library()
 calls?
In-Reply-To: <25533.12125.780136.352115@stat.math.ethz.ch>
References: <CAD7Bkx-SFxFYra8kPZvNntKBtscQzgABw1LMNTKY7XYexnCQgQ@mail.gmail.com>
 <25533.12125.780136.352115@stat.math.ethz.ch>
Message-ID: <25533.16012.558065.724821@stat.math.ethz.ch>

>>>>> 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:<pkg>" %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 at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel



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