Brent 'Dax' Royal-Gordon skribis 2004-04-15 16:56 (-0700):
> 1. Allow %hash<<foo>> to be typed as %hash<foo>.  There would be a
>    conflict with numeric less-than, but we can disambiguate with
>    whitespace if necessary.  After all, we took the same solution with
>    curlies.

Curlies which, as said, I also don't like typing.

On a US Dvorak or QWERTY keyboard,

{'foo'} is 9 key presses and 7 characters

<<foo>> is 9 key presses and 7 characters

<foo> is 7 key presses and 5 characters

`foo is 4 key presses and 4 characters

Also important when picking a character is its glyph. ` is light weight,
like the . that we use for methods. I don't want whitespace around this
operator, so the operator must not be fat, like %, @ or #.

The biggest deficiency with the two syntaxes that are already there is
that they both use a pair of characters. That is needed because for some
reason every syntax apparently needs to support every feature that Perl
has. That is: slices.

I do not use hash slices often enough to use the arcane syntax all the
time. I like bracketing delimiters for code blocks and for lists of
things. They are not something I wish to type every line.

I dislike XML and HTML because they're a lot of typing (not only because
of the redundancy in the closing tags).

Perl 6's leaving out the parens with if/foreach/while/until is a very
good step in the right direction.

Compare:

    $foo<bar><baz><quux>

    $foo`bar`baz`quux

In fact, I encourage everyone to type the above two lines a few times.

> 2. Allow barewords in curlies as a special case.  We're already allowing
>    them on the left side of => (I think), which is even more ambiguous.

Same problem, and it would mean reversing an earlier decision that in my
opinion was a sane one.

It would require some character to disambiguate again, or you have the
unquoted strings that Perl 5 has, but restricted to hash usage. Adding a
sub or method that happens to have the same name as a hash's key should
not break any code.

> 3. Define hash indexing with a pair to index on the key.  This would
>    allow the syntax %hash{:foo}.  (This could even be achieved by making
>    C<~$pair eq $pair.key>.)

{:foo} is 8 key presses. A too small step to be worth anything in
practice.

> 4. Define a bareword-quoting prefix operator (i.e. one that turns the
>    next \w+ into a string) and use the normal hash indexer, {}.  I have
>    no suggestion for this operator's name, although if you wanted to rip
>    out the current unary backticks, it could be a candidate:
>    %hash{`key}.

Same as 3, but with another character.


Juerd

Reply via email to