--
On Thu, 05 Sep 2002 09:31:45
Damian Conway wrote:
>Erik Steven Harrison wrote:
>
>> I know that the property syntax is pseudo established,
>> but I'm beggining to become a bit jaded about all the
>> built in properties were building. What about good ol'
>> aliases?
>>
>> sub hidden (str $name, int $force := $override) {...}
>
>I'm not keen on it because it will be hard to explain
>(or detect) the difference between that and:
>
> sub hidden (str $name, int $force //= $override) {...}
>
Just found this hidden in my inbox. I didn't think anyone was paying attention ;-).
I think that the difference can be swept under the table in a handwavy sort of manner
by pointing out that these subroutine declarations shouldn't be pointing to globals or
widely scoped lexicals like that. But this all brings me back to the question of
lexical leaking. Are $name and $force lexical to the sub? I know that we are trying to
avoid lexical scopes leaking into each other, but I honestly can't figure out how that
rules and these argument declarations interact. Someone care to explain?
>What I most like about the C<is> syntax is (like methods in
>OO Perl), it associates a meaningful *name* with each
>deviation from standard behaviour.
This is the argument that would win me over to the property syntax. Self documenting
code is an admirable goal. But I wonder about our overuse of 'is'. The performance
issues of a hash that lives with every variable aside, it all looks the same to me.
And I like different things to look different. In a related note, I'm always confused
by whether or not we look at the value of the variable or it's name. See below . . .
>
>I find:
>
> sub hidden (str $name, int $force is aka($override)) {...}
>
>*much* more readable, since I can read it in English.
Yeah . . . except I want at least single quotes around that darn $override. Required
singles even. Having it be context sensitive to the type of property is WAY to subtle
for me. And if $override is a reference I'd like that to DWIM (though I understand
that I may be the only person for which that behavior is intuitive). And what happens
with double quotes - a symref? Ack!
If $force is aka(@override) is going to be a compile time error, then why can't we
just $force is aka(override) and just carry the typing over. And if it's not a compile
time error then what in Knuth's name does it . . . . oh never mind - my head just
exploaded.
-Erik
>
>Damian
>
PS - Ha! My name above Damian's :-)
Is your boss reading your email? ....Probably
Keep your messages private by using Lycos Mail.
Sign up today at http://mail.lycos.com