Consider the following code snippets:

> list(quote(1 + 1), I(quote(1 + 1)))
[[1]]
1 + 1

[[2]]
[1] 2  # should also be 1 + 1!?

> str(list(quote(1 + 1), I(quote(1 + 1))))
List of 2
 $ : language 1 + 1
 $ : language + 1 1  # why is this line different from the one above?
  ..- attr(*, "class")= chr "AsIs"

> quote(1 + 1)
1 + 1

> I(quote(1 + 1))
1 + 1  # OK

> str(quote(1 + 1))
 language 1 + 1

> str(I(quote(1 + 1)))
 language + 1 1  # again different
 - attr(*, "class")= chr "AsIs"


This inconsistency is particularly striking when printing the individual elements of a list works but printing the whole list does not:

> l <- list(quote(length(a)), I(quote(length(a))))

> l[[1]]
length(a)

> l[[2]]
length(a)

> l
[[1]]
length(a)

[[2]]
Error in print(length(a)) : object 'a' not found


Should we consider this a bug? If so, I can add it to Bugzilla.

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to