Sorry, but I gotta put in a couple of comments which are basically 
subjective and don't realy need discussion.  So, just for consideration:


  /^pat$/               /^pat\n?$/            # ^ and $ mean string
  /^pat$/m              /^^pat$$/             # no more /m
  /\A...(^pat$)*...\z/m /^...(^^pat$$)*...$/  # no more \A or \z

Poor Huffman coding?  Most matches are against a one-line string so it 
doesn't matter, but it seems like most multi-line matching is done 
against the beginning/end of a line, rather than the whole string. 
Also, '^^' and '$$' seem to me to say "really, really the beginning of 
the beginning" or "end of the end":

                       /^^...(^pat$)*...$$/

The present choices are more consistent with the literal historical 
definition, so maybe reversing them would be too radical, but then again 
\A, \Z, \z were introduced to deal with the exceptionalness of matching 
at the beginning and end of the whole string.

(Oh, and "\n?$" may be clearer, but it sure ain't "easy things easy"-er.)



  (?{ code })           { code }              # call code, ignore return
                        { code or fail }      # use code as an assertion
  . . .
                        <{ code }> # call return value as anonymous rule
                        <( code )> # call code as boolean assertion

When Damien was explaining this and giving examples, <{ code }> looked 
much more like { code or fail } and <( code )> looked more like $(code) 
or (pat).  In other words, it seemed like <( code )> would produce a 
pattern for matching and <{ code }> a result:

                        <{ code }> # call code as boolean assertion
                        <( code )> # call return value as anonymous rule

Admittedly, <( code )> doesn't capture (either way) and there may be a 
deeper consistency which would only become obvious after working with 
perl6 for a while, but to me it just doesn't scan the way it was given.


p

Reply via email to