[Rd] Getting param names of primitives

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Jul 11 16:19:26 CEST 2007

On Wed, 11 Jul 2007, Duncan Murdoch wrote:

> On 7/11/2007 9:40 AM, Seth Falcon wrote:
>> Prof Brian Ripley <ripley at stats.ox.ac.uk> writes:
>>> My problem is that if we make formals() work on primitives, people will 
>>> expect
>>> formals(log) <- value
>>> to work, and it cannot.
>> But it could give an informative error message.  Asking for formals()
>> seems to make sense so making it work seems like a good idea.  I'll
>> agree that it working might encourage someone to try formals<-(), but
>> the fact that it cannot do anything but error seems like a strange
>> reason not to make formals() work.
> But primitives don't have formals, and that's why you can't set them. Having 
> formals(primitive) work just makes it harder to talk about the language. 
> Closures have formals, primitives don't.  Both have args.  If you want to 
> work with the args of a function, use the args.

I agree: I was going to reply to Seth that the main reason was that 
'formals() ought to refer to formals which primitives lack'.

And note too that args(<primitive>) does not work for all primitives, as 
some are really part of the language (e.g. for(), return()).  Exactly 
which are is perhaps debatable, and the person who implemented the 
mechanism got to decide.

Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

More information about the R-devel mailing list