Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Cunning use of [], () & {} in R# and in future? Rebol versions?

From: carl:cybercraft at: 24-Dec-2003 22:41

On 18-Oct-03, Maxim Olivier-Adlhoch wrote:
>> -----Original Message----- From: Carl Read >> [mailto:[carl--cybercraft--co--nz]] Sent: Friday, October 17, 2003 2:02 >> AM To: [rebol-list--rebol--com] 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