[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-

Reply via email to