Hello,

Inline.

Às 15:07 de 07/10/2018, Laurent Gautier escreveu:
Note that having "function" in its class attribute does not make an object a primitive.

I did not say it does.

What Peter said is that "args() on a primitive should yield a closure" and this return value is indeed a closure.

Rui Barradas

For example:

 > class(`[`)
[1] "function"
 > is.primitive(`[`)
[1] TRUE
 > class(`rnorm`)
[1] "function"
 > is.primitive(`rnorm`)
[1] FALSE


Le dim. 7 oct. 2018 à 10:04, Rui Barradas <ruipbarra...@sapo.pt <mailto:ruipbarra...@sapo.pt>> a écrit :

    Hello,

    I don't see why you say that the documentation seems to be wrong:


    class(args(`+`))
    #[1] "function"


    args() on a primitive does return a closure. At least in this case
    it does.


    Rui Barradas

    Às 14:05 de 07/10/2018, Peter Dalgaard escreveu:
     > There is more "fun" afoot here, but I don't recall what the point
    may be:
     >
     >> args(get("+"))
     > function (e1, e2)
     > NULL
     >> args(get("["))
     > NULL
     >> get("[")
     > .Primitive("[")
     >> get("+")
     > function (e1, e2)  .Primitive("+")
     >
     > The other index operators, "[[", "[<-", "[[<-" are similar
     >
     > The docs are pretty clear that args() on a primitive should yield
    a closure, so at least the documentation seems to be wrong.
     >
     > -pd
     >
     >
     >> On 6 Oct 2018, at 19:26 , Laurent Gautier <lgaut...@gmail.com
    <mailto:lgaut...@gmail.com>> wrote:
     >>
     >> Hi,
     >>
     >> A short code example showing the warning might the only thing
    needed here:
     >>
     >> ```
     >>> formals(args(`[`))
     >> NULL
     >>
     >> *Warning message:In formals(fun) : argument is not a function*
     >>> is.function(`[`)
     >> [1] TRUE
     >>> is.primitive(`[`)
     >> [1] TRUE
     >> ```
     >>
     >> Now with an other primitive:
     >>
     >> ```
     >>> formals(args(`sum`))
     >> $...
     >>
     >>
     >> $na.rm
     >> [1] FALSE
     >>
     >>> is.function(`sum`)
     >> [1] TRUE
     >>> is.primitive(`sum`)
     >> [1] TRUE
     >>> class(`[`)
     >> [1] "function"
     >> ```
     >>
     >> Is this a feature ?
     >>
     >>
     >> Laurent
     >>
     >>      [[alternative HTML version deleted]]
     >>
     >> ______________________________________________
     >> R-devel@r-project.org <mailto: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

Reply via email to