On Tue, 30 Nov 2004 10:43:10 +0100, Juerd <[EMAIL PROTECTED]> wrote:
Alexey Trofimenko skribis 2004-11-30 9:09 (+0300):delimiters should have corresponding closing character, so it should be something like
Please, stop seeing ` as a circumfix operator in this context. What you do is like saying that after . you expect a capital letter. It's a programming language, and the only definition useful is the language itself, disregarding other languages, like Perl 5 and English.
In current Perl, :: is also known as '. And that's not a quoting character in that context. In an early Apocalypse, Larry said not to make the same "mistake" again because it would be hard to syntax-colour. But that doesn't quite count, as matching for editors will have to be rewritten anyway to support things like "$foo{"bar"}".
I have several editors even on windows, and not even specially written for perl, which do color ' as :: correctly. Personally, I liked that syntax, it has some similarities to Ireland surnames:) $O'Hara{Scarlett}
but it puts big restrictions on what can be part of the name (actually, thoose which match to <ident> only), so $package'$varname won't work.
I meant only that your ` can't be replacement to   because latter allows MUCH more freedom in key names. Actually, only space has special meaning here.
so, could you be more explicit, what rules your syntax have?
$a`$b+$c`$d, is it equivalent of $a[$b+$c][$d] or $a[$b]+$c[$d] ?
and I think, polymorphic treating of ` as either {} or [] adds some overhead.. and unstability of your code. Especially in cases like $a`$b, when compiler just can't see in compiler time, what could be contained in $b - number or string.
only one variant of that syntax looks for me useful:
$var`Only`Ident`Compatible{$strings}`Here123
as replacement for $var{'Only'}{'Ident'}{'Compatible'}{$strings}{'Here123'}
so ` works here exactly as Java(ECMA)Script . no spaces allowed, no expressions, and it is always a HASH subscript.
doesn't lua have that prefix `Quoting behavior already? ( 'text' eq `text ) or it was some other language? If to mimic it, than
$var`Only`Ident`Compatible{$strings}`Here123
could be automatiaclly transformed into
$var'Only''Ident''Compatible'{$strings}'Here123'
Macro definition for it could be very simple, like macro postfix:Â`Â is parsed {<ident>} {return "'$0'"} or something like.
%hash"key""anotherkey"[1]=0 %hash'key''anotherkey'[1]=0 :key"value" :key'value'
This is just making parens/curlies optional for more operators than <<>>.
but :key'value' is the same as :key<<value>>.. distinction shown only on occasional spaces in ''.
$var.<key1><key2>[1].<key3> # yikes, but still better than <<>><<>>
Still hard to type. Simply put, repeated circumfix operators suck, regardless of whether they are <>, <<>>, "", '', [], {}.
hm, I thought something like this long time ago, when I come to perl and some other languages from pascal, where you could address a 3dimensional array with a[1,2,3] instead of a[1][2][3]; but there was no problem at all, it's a matter of habit. now I consider latter more readable and flexible.