From ruipb@rr@d@@ @ending from @@po@pt  Sun Oct  7 16:19:09 2018
From: ruipb@rr@d@@ @ending from @@po@pt (Rui Barradas)
Date: Sun, 7 Oct 2018 15:19:09 +0100
Subject: [Rd] Warning when calling formals() for `[`.
In-Reply-To: <CA+JCgN2meyWUtiBgJ=E79qjVOzSc+H3tBUtOKQ-75PZFwohOLw@mail.gmail.com>
References: <CA+JCgN254QaHVepo03ZuGLsatwmjfDSnUP3yq43N6TguBdWN5g@mail.gmail.com>
 <634D4A0E-A036-4FEB-8C85-978262B46EA7@gmail.com>
 <550606ea-720a-ca30-a762-d8aaf2484661@sapo.pt>
 <CA+JCgN2meyWUtiBgJ=E79qjVOzSc+H3tBUtOKQ-75PZFwohOLw@mail.gmail.com>
Message-ID: <4d547cee-e291-4cb4-56ba-223c32cd0cab@sapo.pt>

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 at sapo.pt 
> <mailto: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
>     <mailto: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 <mailto:R-devel at r-project.org> mailing list
>      >> https://stat.ethz.ch/mailman/listinfo/r-devel
>      >
>



[Rd] Warning when calling formals() for `[`.
Rui Barradas