By the Dictionary:
"empty? This is a synonym for TAIL? The check is made relative to the
current location in the series."
Most of the problems here seem to be semantics. When we create a
series, we (usually) assign a variable to a location in that series.
But the variable and the series are two separate things. The variable
and the series are two separate things. The variable and the series are
two separate things. This is important: The variable and the series are
two separate things.
Using a variable in a Core series operation does not automatically
change it's value (or index). All the operations return a new value (or
index) that you can use, or ignore. The original, seminal variable is
not an automatic "cursor" into the series. It has no special
privileges, and any other variable pointing to the series will work
just as well (right down to the bugs). The variable and the series are
two separate things.
As mentioned by others, the proper way to determine if an entire series
is empty is to test the series from its head
>> empty? head aSeries
It's very important to understand that this does not test whether
"aSeries" is empty. aSeries is not itself a series, it is an index to a
position in a series.This is a subtle but crucial point, and explains
why the series operations work the way they do.
" ... the block exists on its own, and that colors simply refers to the
head of the block."
In other languages, we would usually have to use extra punctuation to
"dereference" a pointer to another variable, but REBOL handles this all
automatically (and consistently!).
Every series is a movie, and all the variables only frames.
-- Ted Husted, Husted dot Com, Fairport NY USA.
-- Tel 716 425-0252; Fax 716 223-2506.
-- http://www.husted.com/