Luke Tierney wrote:

R does not have macros.

Those are related -- because of lazy evaluation one does macros are
not needed to achive semantic goals (see for example tryCatch).  Being
able to define friendlier syntax would sometimes be nice though (see
tryCatch again).

Also for some practical purposes. For instance, it is pretty hard to loop over a set of variables and get the output labeled with the variable names

for (y in list(systbt, diastbt)) plot (age, y)

will (of course) plot both with a y axis labeled "y". A macro version of "for" could potentially create the expansion

plot(age, systbt)
plot(age, diastbt)

and evaluate the result. (Presumably, this is already possible with a bit of sufficiently contorted code, but there's no user-friendly syntax for it that I know of.)

In R, most data types (including numeric vectors) do not have a standard
external representation which can be read back in without evaluation.

The default print form is not readable in this sense but dput is
available for this purpose.

I think the point is that dput() is not always equivalent to the object - parsing dput output gives a different object from the original. Numeric vectors of length > 1 is the most obvious case, "expression" objects another (those can get terribly confusing at times).

We currently have this sort of confusion

> e <- substitute(x+a,list(a=c(1,2,3)))
> e2 <- parse(text=deparse(e))[[1]]
> e2
x + c(1, 2, 3)
> e[[3]]
[1] 1 2 3
> e2[[3]]
c(1, 2, 3)

> dput(e)
x + c(1, 2, 3)
> dput(e2)
x + c(1, 2, 3)

That is, deparse/reparse of an object can lead to a _different_ object that gets dput()'ed indistinguishably.

I have occasionally been wondering whether it would be a good idea to have some sort of syntax primitive requesting parse-time evaluation. E.g.

quote(x + .const(c(1,2,3)))

would be equivalent to

substitute(x+a,list(a=c(1,2,3)))




--
   O__  ---- Peter Dalgaard             Ă˜ster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED])              FAX: (+45) 35327907

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to