On 18-Oct-03, Maxim Olivier-Adlhoch wrote:

>> -----Original Message----- From: Carl Read
>> [mailto:[EMAIL PROTECTED] Sent: Friday, October 17, 2003 2:02
>> AM To: [EMAIL PROTECTED] Subject: [REBOL] Re: Cunning use of [],
>> () & {} in R# and in future? Rebol versions?



>> On 17-Oct-03, Andrew Martin wrote:

>>> Earlier I wrote:
>>>>> X[2]
>>>> == "b"

>>> It looks like I'm solving problems which not yet exist.

>> But it got me thinking anyway, so would this be useful...

>>>> blk: ["a" "b" "c" "d" "e"]
>> == ["a" "b" "c" "d" "e"]
>>>> blk/[1 4 5]
>> == ["a" "d" "e"]



> now you're talking

> it even looks rebolish... add python's list notation which is nice
> (I must admit, and is missing altogether in rebol).

> examples (with equivalent rebol line after): 

> series[5:10] -> return a series starting at 5 ending at 10
> copy/part at series 5 at series 10

> series[5] -> return element 5 series/5 (I'd rather keep series/5 and
> add /[5] which returns a block with only the fifth element in it

> series[:10]  -> return everything up to element 10
> copy/part series at series 10

> series[5:]   -> return everything starting a element 5
> at series 5


> you can even use negative indexes to reverse the direction...

> so:
> series[-5:-10]
> reverse at series (length? series - 10) at series (length? series -
> 5)


> the advantage of the python notation is that it is much more
> unified. It is also often much shorter and more visual

> I'm not saying scrap the current system (we needs its versatility
> and oppeness), just adding some equivalent to the python method in
> the way Carl just wrote it. We'd all benefit from shorter, often,
> more redeable scripts.


> I know we can write a function for it... but that adds a word in the
> source which really isn't needed if its supported in the base
> syntax. Only RT can do that.


> the way carl just describes it, added with added range notation does
> not break any current rebol syntax I can remember, yet it makes our
> lives much simpler.

> What do you all think?

I'm not sure how best to impliment it in a REBOL way, but it would be
nice.  For selecting ranges within a series, perhaps parens could be
used something like this...

>> blk: ["a" "b" "c" "d" "e" "f" "g"]
== ["a" "b" "c" "d" "e" "f" "g"]
>> blk/[1 (3 5)]
== ["a" "c" "d" "e"]
>> blk/[(first 2) (5 last)]
== ["a" "b" "e" "f" "g"]

But, should it also work like this...

>> blk/[(first 2) (5 last)]/3
== "e"

?

-- 
Carl Read

-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to