[Rd] Error condition in evaluating a promise
Simon Urbanek
simon.urbanek at r-project.org
Wed Oct 18 02:08:20 CEST 2006
Is there a way to raise an error condition when a promise is
evaluated such that is can be evaluated again? Right now strange
things happen when the evaluation fails:
> delayedAssign("x", if (failed) stop("you have to initialize me
first!") else foo)
> foo <- "I'm foo"
> failed<-TRUE
> x
Error: you have to initialize me first!
> x
Error: recursive default argument reference
^^-- from now on x is completely unusable - it has no value (i.e.
cannot be passed to any function) and yet won't be evaluated again
> failed<-FALSE
> x
Error: recursive default argument reference
> delayedAssign("x", if (failed) stop("you have to initialize me
first!") else foo)
> x
[1] "I'm foo"
I'd expect something like
> failed<-TRUE
> x
Error: you have to initialize me first!
> x
Error: you have to initialize me first!
> failed<-FALSE
> x
[1] "I'm foo"
Is there a way to achieve that? Intuitively I'd think that this is
the desired behavior, because currently the promise is sort of
'broken' after an error (AFAICT the behavior is not documented
anywhere) - but then, I wasn't messing with promises until now...
Thanks,
Simon
More information about the R-devel
mailing list