On Saturday 06 October 2001 04:58 am, Erik Lechak wrote: > a) I just plain don't like to use the "_" key. Hitting the "shift" key > and the "-" key just does not feel right. I call this the > Huffman-Carpel-Tunnel coded argument. That is to say that the more > often an operator is used, make it cause the least amount of pain and > physical damage. And I merge strings a lot in Perl.
On a typical US qwerty keyboard (yes, I'm being US-centric - feel free to present other layouts), there are only 11 unshifted symbolic keys. Looking at 751 (Perl) files within the Perl 5.6.1 library, a count of the symbols used: 82045 '$' 44535 '(' 44422 ')' 44033 ';' # Unshifted 40530 '=' # Unshifted 40485 '_' 35915 ',' # Unshifted 34559 '-' # Unshifted 33474 '#' 32833 '.' # Unshifted 32823 '>' 30855 '"' 29369 ':' 28106 "'" # Unshifted 25231 '{' 25212 '}' 16098 '<' 15058 '/' # Unshifted 14475 '\' # Unshifted 11739 '@' 6948 '[' # Unshifted 6749 ']' # Unshifted 6676 '%' 6052 '!' 5644 '&' 4672 '|' 4222 '*' 3788 '+' 2782 '?' 2715 '~' 2628 '^' 361 '`' # Unshifted One of the reasons that '-' and '>' are so high is dereferencing. $a->[1] and $a->method. I don't have a breakout of each character's use, though. ('.' as a sentence terminator, a decimal point, an 'anything' character, or a concatenation operator, for instance. However, it *still* appeared fewer times than an underscore.) Most of the unshifted characters already have a standardized use in computer languages. Otherwise, [] instead of (), or maybe `` instead of "". b) I do not like the idea that you must have a space before the > underscore so that it is not lumped into the variable name. > i.e. $a=$b_$c; is wrong. You must type $a=$b _$c > $a_=$b; is wrong. You must type $a _=$b; > > Even though it is a little cramped, sometimes I code that way. Perl5 > lets me put that operator right up next to the variable and I want Perl6 > to allow it as well. I have looked at tons of other programmers code > and most do this and take it for granted. And be honest with a quick > look above can you see the difference. > > c) Because of reason b. I find a little comfort in thinking of the > string concatenation operator as " _" that is a space followed by the > underscore. That way I could apply that rule universally. And then I > thought of the RFC 082 section of Apocalypse3 and hyper operators. > Because if it eases your mind to think of it as " _", then to be > consistent the hyper operator should be "^ _" not "^_". > i.e. @a=@b^_@c; Correct according to apocalypse 3, but what > happened to the space > @a=@b$ _@c; Super ugly but would be consistent; > @a^_=@b; O man, can it get worse > @a^ _=@b; Why, yes it can. Looks like the makings of a > neat regex, just throw an "s" or "m" in front. Except that the operator truly is simply an underscore. But it's also a valid identifier character, so where it may be confused with that, you are simply required to make it less ambiguous to the parser. $a _= $b _ $c; # $a _= $b _$c; ${a}_=${b}_$c; %h{$s}_="Hello, "_"world!\n"; As Larry said, no different that the other operators that also consist of valid character identifiers. Now granted, in some of those cases, misparsing would result in a syntax error. But that still is ambiguous? Is the '_' supposed to be the operator? Was the actual operator accidentally omitted? > > d) To me the underscore represents something special. Like the > variables $_, or @_, __DATA__ not string concatenation. > > > possible solution : > > I listed out characters to me that mean concatenate or merge. > Here is the list: > a) & "AND". Great, However it denotes a subroutine in perl. And bit-wise '&'. (Not used very much in the Perl core, granted, but used elsewhere nonetheless.) (And it's shifted, BTW.) > b) + "ADD" or "PLUS". Read somewhere in the camel book that > concatenation strings is not adding. and would confuse the math. Yes. (And it's shifted, BTW.) > c) - "Hyphen". When pronounced hyphen it sounds great. When > pronounced minus ... well that won't work. The same mathematical problems as '+', in both its binary and unary form. Plus it's a range operator within a character class. > > Then I thought of it. In school whenever I separated a single word > into two words my paper would come back with a small red arch joining > the two words together into one. Of course that symbol was usually > followed by a -5 or something like that. So I scanned the keyboard for > something that looked like that small arch. Then I found it. The "^" > symbol. Since I have a problem with the hyper operator idea, Maybe it > could be used here. But what about xor. I can honestly say I have > never used "^" to mean xor. The Huffman coded concept should make the > use of xor rather than "^" a viable alternative. I read through > Apocolypse3 and saw this justification: IIRC, '^' was considered earlier. (And it's shifted, BTW.) -- Bryan C. Warnock [EMAIL PROTECTED]