Hi Bard,
it ain't all that crazy:
>
>Try this from the Rebol prompt
>
>a1: [ a: "aaa" b: "bbb" ]
>find a1 a
>== none
I was surprised at what you reported (although I suspect something). To be
fair I followed your instructions:
>> a1: [ a: "aaa" b: "bbb" ]
== [a: "aaa" b: "bbb"]
>> find a1 a
** Script Error: a has no value.
** Where: find a1 a
Now, that's more like what I'd have expected.
1. What happens here? Find takes two arguments. Argument 1 is a1, its
replaced by its value - the block [ a: ... ] and the value is handed to
find. Next REBOL looks for find's second argument, it's the word a, aha,
let's get its value, oops it doesn't have a value, have to report it as an
error.
2. In your case you must have previously set some word a to some value and
REBOL - having successfully dereferenced a in your case, tried to match the
value referenced by a to your block and no, sorry, there was no match.
3. Try:
>> a1: [ a "aaa" b "bbb" ] ;- note - no colons after 'a and 'b.
== [a "aaa" b "bbb"]
>> select a1 'a
== "aaa"
Or - if you prefer:
>> a1/a ;- called a path
== "aaa"
>> a1/b
== "bbb"
Elan