[Rd] print.<strorageMode>() not called when autoprinting

William Dunlap wdun|@p @end|ng |rom t|bco@com
Tue May 21 19:38:38 CEST 2019


It also is a problem with storage.modes "integer" and "complex":

3.6.0> print.integer <- function(x,...) "integer vector"
                3.6.0> 1:10
 [1]  1  2  3  4  5  6  7  8  9 10
3.6.0> print(1:10)
[1] "integer vector"
3.6.0>
3.6.0> print.complex <- function(x, ...) "complex vector"
3.6.0> 1+2i
[1] 1+2i
3.6.0> print(1+2i)
[1] "complex vector"

Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Tue, May 21, 2019 at 9:31 AM Martin Maechler <maechler using stat.math.ethz.ch>
wrote:

> >>>>> William Dunlap via R-devel
> >>>>>     on Thu, 16 May 2019 11:56:45 -0700 writes:
>
>     > In R-3.6.0 autoprinting was changed so that print methods for the
> storage
>     > modes are not called when there is no explicit class attribute.
>  E.g.,
>
>     > % R-3.6.0 --vanilla --quiet
>     >> print.function <- function(x, ...) { cat("Function with argument
> list ");
>     > cat(sep="\n    ", head(deparse(args(x)), -1)); invisible(x) }
>     >> f <- function(x, ...) { sum( x * seq_along(x) ) }
>     >> f
>     > function(x, ...) { sum( x * seq_along(x) ) }
>     >> print(f)
>     > Function with argument list function (x, ...)
>
>     > Previous to R-3.6.0 autoprinting did call such methods
>     > % R-3.5.3 --vanilla --quiet
>     >> print.function <- function(x, ...) { cat("Function with argument
> list ");
>     > cat(sep="\n    ", head(deparse(args(x)), -1)); invisible(x) }
>     >> f <- function(x, ...) { sum( x * seq_along(x) ) }
>     >> f
>     > Function with argument list function (x, ...)
>     >> print(f)
>     > Function with argument list function (x, ...)
>
>     > Was this intentional?
>
> No, it was not.  ... and I've been the one committing the wrong change.
>
> ... Related to the NEWS entries which start
>
>      "Changes in print.*() ...."
>
> Thank you Bill, for reporting....
>
> It's amazing this has not been detected earlier by anybody.
>
> I think it is *only* for functions, not general
> print.<storagemode>() as you were suggesting - right?
>
> Martin
>

	[[alternative HTML version deleted]]



More information about the R-devel mailing list