[Rd] Warning when calling formals() for `[`.
Rui Barradas
ruipb@rr@d@@ @ending from @@po@pt
Sun Oct 7 16:19:09 CEST 2018
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 <ruipbarradas using sapo.pt
> <mailto:ruipbarradas using 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 <lgautier using gmail.com
> <mailto:lgautier using 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 using r-project.org <mailto:R-devel using r-project.org> mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>
More information about the R-devel
mailing list