[Rd] An inconsistency with promise in attributes
Prof Brian Ripley
ripley at stats.ox.ac.uk
Mon Aug 11 20:40:51 MEST 2003
On Mon, 11 Aug 2003, Luke Tierney wrote:
> On Mon, 11 Aug 2003, Saikat DebRoy wrote:
>
> > When an attribute is a delayed expression sometimes it is not forced
> > when it is extracted.
> >
> > > x <- list()
> > > attr(x, "p") <- delay(1)
> > > x
> > list()
> > attr(,"p")
> > <promise: 0x11e4bb8>
> > > val <- attr(x, "p")
> > > val
> > [1] 1
> > > attr(x, "p")
> > <promise: 0x11e4bb8>
> >
> > I am not quite sure whether the above is a bug or not
>
> Promises are not forced when retrieving them from a data structure. I
> don't think this is a bug (though I don't think the semantics of user
> level access to promises are exactly cast in stone).
I noticed that ?delay says
A _promise_ to evaluate the expression. The value which is
returned by 'delay' can be assigned without forcing its
evaluation, but any further accesses will cause evaluation.
and I take that to mean that printing an expression should force promises.
(Not that the help page is definitive, but still I've wondered before why
print() did not force promises.)
Brian
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list