Phoenix.pm: quoting constant hash keys survey

Anthony Nemmer intertwingled at qwest.net
Sat Apr 17 02:03:11 CDT 2004


Rename Perl 6 to something else.

Scott Walters wrote:

>Hi folks,
>
>I'm soliciting opinions - no experience with Perl beyond the basics are required
>so this isn't for experts only. I want as many opinions as I can get.
>
>It was recently proposed in Perl 6 that %foo{bar} would now always mean %foo{bar()}
>rather than %foo{'bar'}. This is part of the general move away from barewords. 
>This also surprises some people as things like my $foo = shift; means shift(),
>not 'shift', so Perl's generally tendencies are reversed in hash subscripts. This
>is usually the right thing to do but requires programmers to be aware of it.
>So %foo<<bar>> and a difficult to type UNICODE version with gulimets where the
><< and >> are each one character does the same thing as %foo{'bar'} -
>
>So...
>
>   %foo{'bar'} is the same as %foo<<bar>>
>
>and
>
>   %foo{bar} is the same as %foo{bar()}
>
>The discussion became interesting when people complaiend that %foo<<bar>> really
>doesn't save any characters and both are optimized towards the uncommon case
>of allowing slices. In P6, slices happen when multiple keys are fed to a hash,
>not when the $ is swapped for a % as in Perl 5. Hence all of these examples are
>non-slice hash lookups.
>
>Someone proposed that %foo`bar be offered to optimize the common case of
>%foo<<bar>> where no slice is being taken and the subscript is a variable or
>constant. So %foo`$bar would be valid as well, but that would probabaly
>tend to be written as %foo{$bar} for clarity. So...
>
>
>   %foo{'bar'} is the same as %foo<<bar>> is the same as %foo`bar
>
>and
>
>   %foo{bar} is the same as %foo{bar()}
>
>Tick, `, was selected because it doesn't currently have any meaning in that
>context - %foo `ls` isn't valid Perl. Other characters that also don't have an
>operator state meaning were rejected for other reasons.
>
>So, the survey question is, should this meaning of ` be or not be included
>in Perl 6?
>
>Pros:
>
>* Mismatched bracket characters often generate typos and syntax errors - matching
>bracketing characters is tedious
>
>* 2 keystrokes plus variable and subcript names versus 5
>
>* Caters to JavaScript programmers who are used to writing things like
>document.forms.myform.submit(), bluring the distinction between hash subscripts
>and method calls (in Perl 6, that might be %document`forms`myform.submit(), or 
>in Perl 5, $document{forms}{myform}->submit() )
>
>* ` might generalize to quoting single words, making the removal of barewords
>less painful
>
>Cons:
>
>* %foo`bar doesn't look like a hash subscript if you're used to %foo{'bar'}
>
>* Could be used to write really terse code
>
>* Ugly
>
>* Perl 6 already has 2 ways to subscript hashes now, 3 is too many
>
>* People who really want something like that can extend the language using Perl 6's
>equivilent to source filters
>
>Okey, everyone run and vote - yea or nay. Let's hear it. Even if your reasons are
>unfounded, vote. 
>
>-scott
>
>
>
>
>  
>

-- 

SKYKING, SKYKING, DO NOT ANSWER.





More information about the Phoenix-pm mailing list