From ruipb@rr@d@@ @ending from @@po@pt  Sun Oct  7 16:04:06 2018
From: ruipb@rr@d@@ @ending from @@po@pt (Rui Barradas)
Date: Sun, 7 Oct 2018 15:04:06 +0100
Subject: [Rd] Warning when calling formals() for `[`.
In-Reply-To: <634D4A0E-A036-4FEB-8C85-978262B46EA7@gmail.com>
References: <CA+JCgN254QaHVepo03ZuGLsatwmjfDSnUP3yq43N6TguBdWN5g@mail.gmail.com>
 <634D4A0E-A036-4FEB-8C85-978262B46EA7@gmail.com>
Message-ID: <550606ea-720a-ca30-a762-d8aaf2484661@sapo.pt>

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
>



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