From lg@utier @ending from gm@il@com  Sun Oct  7 16:07:24 2018
From: lg@utier @ending from gm@il@com (Laurent Gautier)
Date: Sun, 7 Oct 2018 10:07:24 -0400
Subject: [Rd] Warning when calling formals() for `[`.
In-Reply-To: <550606ea-720a-ca30-a762-d8aaf2484661@sapo.pt>
References: <CA+JCgN254QaHVepo03ZuGLsatwmjfDSnUP3yq43N6TguBdWN5g@mail.gmail.com>
 <634D4A0E-A036-4FEB-8C85-978262B46EA7@gmail.com>
 <550606ea-720a-ca30-a762-d8aaf2484661@sapo.pt>
Message-ID: <CA+JCgN2meyWUtiBgJ=E79qjVOzSc+H3tBUtOKQ-75PZFwohOLw@mail.gmail.com>

Note that having "function" in its class attribute does not make an object
a primitive.
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 at 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 at 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 at r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>

	[[alternative HTML version deleted]]



[Rd] Warning when calling formals() for `[`.
Laurent Gautier