Re: [Rd] Identical copy of base function

From: Martin Maechler <maechler_at_stat.math.ethz.ch>
Date: Mon, 27 Feb 2012 16:19:05 +0100

>>>>> Jeffrey Ryan <jeffrey.ryan_at_lemnica.com> >>>>> on Mon, 27 Feb 2012 07:39:32 -0600 writes:

    > Doesn't this also mean that if Matrix is loaded first,
    > det() will be calling Matrix::determinant, which could be
    > quite surprising change in behavior from expectation?


    > This seems rather dangerous and 'untrustworthy' to me -     > unless I am missing some other hidden mechanism involved here.

The only change in R-devel is that library() does not warn about *conflicts* in such a case.
This behavior (and the R code in library()'s checkConflicts()) is completely analogous to

     importFrom("base", det)
     export(det)

but as you surely know, we can not (yet?) import from base.

So again: No changed behavior of R, just some warnings less in a case where they are typically inappropriate.

    > I haven't read the code yet, and I am sure Matrix will "do
    > the right thing", but I have strong reservations about
    > this behavior when applied to the general universe of R
    > and CRAN.

    > Jeff

    > On Mon, Feb 27, 2012 at 6:03 AM, Martin Maechler
    > <maechler_at_stat.math.ethz.ch> wrote:
    >>>>>>> Matthew Dowle <mdowle_at_mdowle.plus.com>     on Mon,
    >>>>>>> 27 Feb 2012 09:59:43 +0000 writes:

>>
>>    > Hello,
>>
>>    > Regarding this in R-devel/NEWS/New features :
>>
>>    > o 'library(pkg)' no longer warns about a conflict
>> with a    > function from 'package:base' if the function
>> is an    > identical copy of the base one but with a
>> different    > environment.
>>
>>    > Why would one want an identical copy in a different
>>    > environment? I'm thinking I may be missing out on a
>> trick    > here.
>>
>> Yes, you are ;-)   The trick is called ``namespace'' :
>>
>> One example which lead me to implement the above:
>>
>> The Matrix package has had an identical copy of 'det' for
>> a while now, but of course  in the Matrix namespace.
>> Because of that, the call to determinant() inside det()
>> will correctly dispatch Matrix methods for determinant(),
>> whereas base::det() would not.
>>
>> Martin
>>
>> ______________________________________________
>> R-devel_at_r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel

    > --
    > Jeffrey Ryan jeffrey.ryan_at_lemnica.com

    > www.lemnica.com www.esotericR.com

    > R/Finance 2012: Applied Finance with R www.RinFinance.com

    > See you in Chicago!!!!



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Mon 27 Feb 2012 - 15:23:22 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 27 Feb 2012 - 16:50:21 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive