World: r3wp
[Parse] Discussion of PARSE dialect
older newer | first last |
Anton 5-Nov-2008 [2719] | Peter's example, from the blog: parse [a b c d] [ any [ start (acc: 0) | set inc integer! (acc: acc + inc) | end ] ] |
BrianH 5-Nov-2008 [2720] | It isn't needed. It's basically the same as if the paren was included on its own, but not in the alternation. |
Anton 5-Nov-2008 [2721] | That's what I thought. But Peter must have thought it was useful for something. |
BrianH 5-Nov-2008 [2722] | Here's a working version of that example: parse [1 2 3 4] [ (acc: 0) any [set inc integer! (acc: acc + inc)] ] |
Anton 5-Nov-2008 [2723] | I thought maybe the start code is only done when one of the other alternates is (about to be) matched. |
BrianH 5-Nov-2008 [2724] | Perhaps he thought a paren could only follow a rule. |
Anton 5-Nov-2008 [2725] | We should wait for Peter's input on that. |
BrianH 5-Nov-2008 [2726] | I like the RETURN proposal as this: RETURN rule Match the rule and return a copy of the value from the PARSE function. Like COPY then BREAK, but without the temporary variable. |
Pekr 5-Nov-2008 [2727] | BrianH: I posted link to Ladislav's Core proposals. There's parse section in there too. You can look at r3-alpha parse group ..... |
BrianH 5-Nov-2008 [2728] | Theye are already covered by the existing proposals. |
Anton 5-Nov-2008 [2729x2] | I vaguely remember suggesting PARSE dialect be extended into parens with a few commands. Parens are executed as normal rebol dialect (not parse dialected in any way). If I remember correctly, it was thought better to keep the parens 'pure' rebol. If that is to be maintained, then I think Peter's RETURN command ought to be morphed into a parse command, as you suggest above, Brian. |
-- ie. that's a good idea. | |
BrianH 5-Nov-2008 [2731x2] | PARSE actually calls DO for those blocks. |
blocks -> parens | |
Anton 5-Nov-2008 [2733] | Right - so doing an extra bind may slow things down. |
BrianH 5-Nov-2008 [2734] | More importantly it will override the meaning of the RETURN function at a point where you would expect it to work. |
PeterWood 5-Nov-2008 [2735] | Clearly my proposal for START is based on my ignorance and inability to search the documents properly :-) It wouldn't hurt as a form of slef-documenting code, though. |
BrianH 5-Nov-2008 [2736] | Actually, I think it would hurt (no offence). The word start is a common name for parse rules and every keyword we add can't be used as a parse rule name. Something to consider when making proposals. |
Anton 5-Nov-2008 [2737] | Gabriele's DO command is interesting. I wonder why it could not become more "functional" and be used after the SET command, eg: SET result DO integer! |
BrianH 5-Nov-2008 [2738] | That DO proposal was the first one to be rejected. It will take some serious problems with dialecting to get it included. |
Anton 5-Nov-2008 [2739] | Perhaps, Peter, you could post a withdrawl for START on the blog. |
Chris 5-Nov-2008 [2740x2] | Re. 'start - could use 'head for the same purpose, it's consistent too with the series accessors... |
Other side of the coin, if 'end is a keyword, 'start is an intuitive companion. | |
BrianH 5-Nov-2008 [2742] | HEAD would be a better name for a directive to reset the position to the beginning of the data. That behavior would be more consistent with the series accessors :) |
Chris 5-Nov-2008 [2743] | 'head? |
BrianH 5-Nov-2008 [2744] | Are you checking whether the position is at the beginning of the series? |
Chris 5-Nov-2008 [2745x2] | Yep. |
That's my interpretation of the 'start proposal. | |
BrianH 5-Nov-2008 [2747] | It was an initialization proposal. Nonetheless, your HEAD? proposal sounds interesting. What problem are you solving that would need such a directive? |
Anton 5-Nov-2008 [2748] | Hmmm... I don't see why it's *necessary*. It doesn't add any functionality - it just bulks up the parse dialect with an extra keyword. |
BrianH 5-Nov-2008 [2749] | At the beginning of the rule you are already at the head of the series, unless the data was already offset. Would you need HEAD? in the middle of the rule to determine if anything was matched already? |
Chris 5-Nov-2008 [2750] | I was just commenting on word usage per the above examples... |
Pekr 5-Nov-2008 [2751] | Anton - but there is some point in time we should start to make rebol bigger by adding unnecessary things, or we will never reach 100MB executable size and outer world migt not consider us being a rellevant alternative :-) |
BrianH 5-Nov-2008 [2752] | I don't think this is quite one of those situations, Petr :) |
Chris 5-Nov-2008 [2753] | Unless we used looong words : ) |
Anton 5-Nov-2008 [2754] | One NOP keyword at a time :) |
Graham 5-Nov-2008 [2755] | do what Carl does ........... and use one letter variables |
BrianH 5-Nov-2008 [2756] | Didn't you get Carl's simplicity blog? It was posted on Reddit and PLNews :) |
Graham 5-Nov-2008 [2757x2] | can you use unicode for variable names? I guess so ... |
allows for me one letter variables available | |
BrianH 5-Nov-2008 [2759] | Yes, you will be able to use Unicode for variable names. I wouldn't suggest it though: You have to use Character Map to enter half of Perl 6's operators because they did exactly what you suggested :( |
Graham 5-Nov-2008 [2760] | Must be Carl's driving force to implement unicode |
PeterWood 5-Nov-2008 [2761] | I think Anton is correct about Return...the Return should preceed the bracket: eg end return ("the return value") is mch better than end (return "the return value"). |
Anton 5-Nov-2008 [2762] | I just followed Brian on that. |
BrianH 5-Nov-2008 [2763] | I was thinking that you not even have the parens at all, and just have RETURN rule. |
Anton 5-Nov-2008 [2764] | ie. return [ rule ... ] |
BrianH 5-Nov-2008 [2765] | That way you could do this to return the first HTML tag from data: [to "<" return thru ">"] |
Chris 5-Nov-2008 [2766] | So that would replace 'true? |
BrianH 5-Nov-2008 [2767x2] | Yup. |
In particular, it would return a copy, like the COPY directive, not the SET directive. | |
older newer | first last |