Luke Palmer wrote:
% as the "mod" operator is a good example of what you describe. There's no need for mod to be a symbolic operator: when you read 5 % 3 you say "5 mod 3". Why would we not write "5 mod 3": it is just as obvious what and how we are doing this operation. And % is uncommon enough that no huffman coding principals may apply. The only thing we have here is cultural baggage.
I can think of one case where % would be preferable to 'mod': when you want to ask for a 'remainder' in the form of a non-integer. That is, '4.5 % 3' returns 1.5 (and parallels '/'), while '4.5 mod 3' returns 1 (and parallels 'div'). That said, if it's decided that the latter definition is inappropriate or unnecessary, then I'd be all in favor of completely dropping '%' in favor of 'mod' for the former definition.
But I do think that Perl 6 is gathering some operator bloat, in that we are defining symbols for things that are not adding to the "obviousness" of the code. They may not be taking away, but all else being equal, we should choose the option of lower abstraction
Hear, hear. Huffman coding is all well and good; but not when taken to the point that it starts interfering with legibility. That said, six-character words are the longest that I'd want to see, and I'd much prefer three- or four-character words if reasonable. Mind you, there are some cases where I'd like to see the symbol-based operators supplemented by name-based ones instead of being replaced by them. For instance, I could live with a few more word-based contextualizers: 'scalar' (same as '$:'), 'hash' (same as '%:'), and 'nested' (same as '@@:'); but I wouldn't want to remove '$:', '%:', or '@@:'. The only reason I don't also suggest 'sub' to supplement '&:' is the confusion that could arise between contextualization and declaration. -- Jonathan "Dataweaver" Lang