Re: [Rd] delayedAssign

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Wed, 26 Sep 2007 21:49:58 -0400

I thought that perhaps the behavior in the previous post, while inconsistent with the documentation, was not all that harmful but I think its related to the following which is a potentially serious bug. z is a list with a single numeric component, as the dput output verifies, yet we cannot compare its first element to 7 without getting an error message.

Later on we see that its because it thinks that z[[1]] is of type "promise" and even force(z[[1]]) is of type "promise".

> f <- function(x) environment()
> z <- as.list(f(7))
> dput(z)

structure(list(x = 7), .Names = "x")
> z[[1]] == 7

Error in z[[1]] == 7 :
  comparison (1) is possible only for atomic and list types
> force(z[[1]]) == 7

Error in force(z[[1]]) == 7 :
  comparison (1) is possible only for atomic and list types
>
> typeof(z)

[1] "list"
> typeof(z[[1]])

[1] "promise"
> typeof(force(z[[1]]))

[1] "promise"
> R.version.string # Vista
[1] "R version 2.6.0 beta (2007-09-23 r42958)"

On 9/19/07, Gabor Grothendieck <ggrothendieck_at_gmail.com> wrote:
> The last two lines of example(delayedAssign) give this:
>
> > e <- (function(x, y = 1, z) environment())(1+2, "y", {cat(" HO! "); pi+2})
> > (le <- as.list(e)) # evaluates the promises
> $x
> <promise: 0x032b31f8>
> $y
> <promise: 0x032b3230>
> $z
> <promise: 0x032b3268>
>
> which contrary to the comment appears unevaluated. Is the comment
> wrong or is it supposed to return an evaluated result but doesn't?
>
> > R.version.string # Vista
> [1] "R version 2.6.0 alpha (2007-09-06 r42791)"
>



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu 27 Sep 2007 - 01:53:01 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 27 Sep 2007 - 12:41:18 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.