[EMAIL PROTECTED] wrote:
>
>
> ((expression))
>
> don't force the double evaluation as was demonstrated (I mean that we get a
> result of the expression, but we don't force Rebol to evaluate it once
> more).
>
> There is a way we can force double evaluation like this:
>
> do expression
>
> but be warned! This is not the double evaluation in the case where the
> result of the expression is a block, a string, ...
>
Along the same vein
>> bingo: "Woof!"
== "Woof!"
>> join "b" ["i" "n" "g" "o"]
== "bingo"
>> (join "b" ["i" "n" "g" "o"])
== "bingo"
>> ((join "b" ["i" "n" "g" "o"]))
== "bingo"
(just as you've been saying), but
>> do join "b" ["i" "n" "g" "o"]
== "Woof!"
>> do (join "b" ["i" "n" "g" "o"])
== "Woof!"
with, or without, the parentheses
>> blk: [join "b" ["i" "n" "g" "o"]]
== [join "b" ["i" "n" "g" "o"]]
>> reduce blk
== ["bingo"]
>> reduce reduce blk
== ["bingo"]
All of this is despite the descriptions of
>> ? do
Evaluates a block, file, URL, function, word, or any other value.
Arguments:
value -- Normally a file name, URL, or block
Refinements:
/args -- If value is a script, this will set its
system/script/args
arg -- Args passed to a script. Normally a string.
/next -- Do next expression only. Return block with result
and new position.
and
>> ? reduce
Evaluates an expression or block of expressions and returns
the result.
Arguments:
value --
Now, is it just me (again ;-) or does it appear that the term
"evaluates" doesn't mean the same thing in these two descriptions?
-jn-