[EMAIL PROTECTED]> Obviously it would be more precisely correct to
say that "a refers to the value 2".
Or, even more precise, 'a refers to a value, with the datatype integer,
currently 2.
In REBOL, we don't seem to yet have standard terminology to clearly
distinguish between the storage to which 'A refers and the current
content. The term VALUE is overloaded to mean both the place whether
the value is stored, and the value itself. This is the same state of
affairs noted elsewhere with series, and anonymous strings, and the
rest of it.
Usage of the language doesn't require the term, since the value is only
exposed through a word, and the operations are generally transparent.
But a meta-term would be nice for conversational purposes.
In REBOL: A is bound to a VALUE which contains 2. The VALUE has a
DATATYPE, such as INTEGER.
Most elsewhere: A represents a memory location which contains 2. A has
a TYPE, such as INTEGER, and the memory location is allocated to store
just enough bits to make an integer.
Most elsewhere: "A is an integer variable with the value 2."
In REBOL: A is a word set to an integer value with the (content?) 2.
Or, maybe, A is a word set to an integer (something?) with the value 2.
Also important, in REBOL, the word/value binding is non-exclusive. Most
elsewhere, A owns the memory location (but sometimes we cheat an let
others "peek"). REBOL values are not monogamous by nature.
It's like everything's a pointer by default, and instead of using a
special grammar to refer to the contents of the pointer (like
pointer^), we use a special grammar to refer to the pointer itself
(like 'pointer). This isn't a bad thing, but, for an old hand, it's
definitely programming through the looking glass.
Personally, I think this is the key area where knowledgeable newbies
may first go astray. The relationship between words and values in REBOL
is rich, and, if REBOL is not your first language, it needs to be
explained in depth.
Another fine point is the different defaults for setting scalars and
non-scalars. Scalars are copied, non-scalars are set by reference. For
example, when you set a series, the index (scalar) is copied but the
data (non-scalar) is referenced.
(The new manual refers to modifying and copying "series data", so I
used that term rather than sequence.)
<http://www.rebol.com/manual/serintro.html>
-Ted.