From Friedrich.Leisch@ci.tuwien.ac.at  Fri Mar  3 12:10:19 2000
From: Friedrich.Leisch@ci.tuwien.ac.at (Friedrich.Leisch@ci.tuwien.ac.at)
Date: Fri, 3 Mar 2000 13:10:19 +0100 (MET)
Subject: [Rd] using function names as parameters (PR#469)
Message-ID: <200003031210.NAA18706@pubhealth.ku.dk>

>>>>> On 03 Mar 2000 12:55:21 +0100,
>>>>> Peter Dalgaard BSA (PDB) wrote:

PDB> hothorn@ci.tuwien.ac.at writes:
>> When using a function name as parameter, here date, the following happends: 
>> 
R> foo <- function(date=date()) cat(date, "\n")
R> foo()
>> Error in cat(date, "\n") : recursive default argument reference

PDB> This is not a bug. Default arguments are evaluated in the frame of the
PDB> called function, so when the date variable is requested and no actual
PDB> argument was supplied, R tries to evaluate the default expression, but
PDB> that involved the variable "date" again. If you pass an argument, the
PDB> default expression is never evaluated and the problem does not arise.

PDB> Similarly a definition like

PDB> function(x=y, y=x) x + y

PDB> is asking for trouble if both x and y are left unspecified on the call.

PDB> [This has nothing to do with passing functions as parameters, by the
PDB> way] 

[Taken to r-core]

Hmm, I asked Torsten to mail the bug report ... I first thought along
your lines and I would agree if I pass ``date'' as default, but we
have ``date()'' as default argument which is the return value of the
function, no?

IMO evaluating the default expression comes down to evaluating
``date <- date()'' which is perfectly legal ...

BTW, BB can do it:

S> foo <- function(date=date()) cat(date, "\n")
S> foo()
Fri Mar  3 09:49:20 MET 2000 
Warning messages:
  looking for function "date", ignored local non-function in: foo()


.f



-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] using function names as parameters (PR#469)
Friedrich.Leisch@ci.tuwien.ac.at