New Path Forms in Version 2.5.55
Paths are a shorthand form for refining (specifying more detailed) references to values. Among other things, paths are often used for series ("array") element references. For example:
data: [10 20 30] print data/2 data/2: 200
If you need to access the data using a variable, the preferred method was to use the non-shorthand (functional) forms:
n: 3 print pick data n poke data n 300
Of course, people don't like typing that much, so they normally write:
Which means the same thing: use the value of n as the index (ie. don't use the n as a symbol, which is allowed in associative accesses).
That's fine, but the problem was that the equivalent SET (assignment) form was not allowed. This line returned an error:
However, that shorthand form has been added to 2.5.55. It can come in handy.
Another form that was suggested by Ladislav Mecir, a professor at the Technical University of Liberec, is to allow computation within the index (as you would find in many other languages). For example, if you want to access:
pick data n + 1
You can write the shorthand:
data/(n + 1)
Remember to include the spaces within the paren expression. This is a standard REBOL expression.
The SET form of this is also allowed:
data/(n + 1): 100
means the same as:
poke data n + 1 100
But, the path form is not as efficient (in memory or in performance) as the PICK and POKE forms.
Of course, you're not limited to simple numerical index paths. You can also do associative paths (SELECT), function refinements, etc. (Although, the benefit of these forms is not that clear.
>> now/(to-word "date") == 18-Oct-2004/10:33:07-7:00
All of these forms are supported now in 2.5.55. If you are interested, please test these new forms. Changes were made at the lexical scanner and interpreter core, so it is possible that new bugs may appear.