R-alpha: "invisible" : R_INVISIBLE .. -- repeat{} gives BOMB
Martyn Plummer
plummer@iarc.fr
Fri, 07 Nov 1997 15:21:26 +0100 (MET)
On 06-Nov-97 maechler@stat.math.ethz.ch wrote:
>I investigated some more:
> R_VISIBLE is set to 0 ``R_Visible = 0;''
> also in other places in eval.c :
>
> line C function
>
> 344: do_if
> 436: do_for
> 480: do_while
> 515: do_repeat
> 720: \
> 727: > do_set
> 738: /
> ^^^
>(line numbers from current 0.60)
>
>In my opinion, only the three cases in do_set ("<-" things) should have
>the invisibility flag...
In S-PLUS, for, while and repeat all return invisible answers, so for
compatibility these should probably be kept. Note that S-PLUS can behave
pretty strangely with this kind of example. Try this (but type carefully!)
n<-0
repeat{ if(n==0) break }->x
Now try printing x, or indeed doing anything else with it.
>
>###-------- THIS IS EVEN WORSE: Segmentation violation !!! -----
>
>testrep <- function(n = 1) c(1, repeat {n <- n-1; if(n<=0) break})
>testrep()
>##R : Process R:1 segmentation violation at Thu Nov 6 11:36:27 1997
Try initializing t to R_NilValue in do_repeat (eval.c).
Martyn
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=