--- Damian Conway <[EMAIL PROTECTED]> wrote:
> Austin Hastings wrote:
> 
> >>The design team has already considered this idea, and my problem
> >>with it then (and now) is that it's inconsistent with other forms
> >>of variable declaration:
> >>
> >>         my sub foo( ?$bar is constant = 1 ) {...}   # OKAY
> >>         my           $bar is constant = 1;          # OKAY
> >>
> >>         my sub foo( ?$bar = 1 is constant ) {...}   # OKAY
> >>         my           $bar = 1 is constant;          # KABOOM!
> >>
> >>and thereby lays a cognitive trap for programmers.
> >
> >  
> > 1- Good catch, and all, but that's the kind of thing (like @ in
> > strings) that gets a warning emitted from the compiler -- not the
> kind
> > of thing that makes it prohibitive to support the feature.
> 
> Quite possibly. Except that, the more of these kinds of cognitive
> dissonances 
> a language has, the harder it is to learn and use. I see part of my
> job as 
> being to keep an eye on how many such special cases we're adding (and
> 
> removing!) from Perl 6. With the goal that the overall cognitive load
> of the language doesn't go up.

But this isn't really a cognitive dissonance, so much as perl6 being
willing to forgive ordering in cases where the meaning is obvious. 

I HOPE this doesn't work:

my sub foo( ?$bar = 1 is constant ) {...}   # OKAY, but redundant.

my sub foo( ?$bar is rw = 1 is constant) {...} # const if defaulted?

Unless the second case works, and I hope it doesn't, there's only one
meaning to "is <trait>" in a signature. Since there's only one meaning,
just warn the developer if the order doesn't agree with declaration
order.

> >>I don't know...maybe I'm worrying too much.
> >>But then, that's part of my job. ;-)
> >  
> > 2- Yeah! ... umm, are we *paying* you for this?
> 
> Not any more. In fact, like Larry and several others on the design
> team, I'm now paying for the privilege of doing it. ;-)

You're a point of light, Damian. (*)

=Austin

*: Borrowed from the "other" George Bush.

Reply via email to