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

Reply via email to