On Mon, Feb 25, 2002 at 10:07:12AM -0800, Larry Wall wrote:
> 
> It's been thought about, but neither accepted nor rejected yet.  It's
> one of those things that depends on future decisions.  Certainly Hugo
> and Dan will vouch for the fact that I was ruminating about similar
> issues last Wednesday, though in this case I was thinking about how a
> topic could supply a default to identical parameters of different
> subroutine or method calls, and not just as the object of the call.
> So assuming that all objects have a C<print> method that takes a
> C<$handle> as an argument, you might could say
> 
>     given $*OUT -> $handle {
>       $str.print;             # same as $str.print(handle => $*OUT)
>       $num.print;             # same as $num.print(handle => $*OUT)
>       $obj.print;             # same as $obj.print(handle => $*OUT)
>     }
> 
> But that might be a bit dangerous in the general case.  I think we need
> a property:
> 
>     my $handle is assumed
> 
> or some such.

Ah! Interesting.

I can see my explanatory charts expanding... Instead of reducing the
classes of defaulting constructs down to one, we've increased it to 3:
those that default to $_ (the majority), those that default to the given
when there is one (C<when>) and those that default to the value flagged
as assumed. Hmmm... lots of interesting questions here. Like, would the
third class have a secondary default of $_ too? Can there be more than
one "assumed" value in scope? Will we be able to define our own methods
that access the "assumed" value?

I know, no answers yet. They will come in time. 


> No cost to performance, possible cost to design, cost to dwimmery
> depends on the wim of the day.
 
dwim -> dwhim :)

> There might also be a cultural price.  That would be difficult to judge
> in advance.  (Though, of course, that's what I'm getting paid for...)

Ah, yes, cultural change is ever so much more touchy than language
change alone. 

> Of course, the waterbed theory of linguistic complexity says that if
> you push the complexity down one place, it comes up somewhere else.  
> In this case, $_ would no longer have the meaning of "the default
> variable", but the more tenuous meaning of "the default default
> variable".

Indeed. And aside from weakening $_, "topic" is not nearly as simple a
concept to explain as $_. Sure $_ is strange to Perl newbies, but it's
at least a concrete variable.

> This is precisely how we manage it in natural language.  When there get
> to be too many possible "its", we resort to explicit naming, or some
> sort of positional tagging ("the former or the latter", "this or
> that").  We could go as far as to outlaw an outer $_ within nested
> topicalizers, but that's likely a bit too heavy-handed.

Probably. Even human languages don't put such absolute restrictions on
methods of back-reference. It's left up to the speaker to decide when
they're no longer comfortable using "its" and need a noun instead. Which
of course leads to infinite variations in style, but alot more freedom.
Hmmmm... just like Perl. :)

> Well, the default binding to $_ was meant to allow topicalizers to be
> abused in just that fashion.  It's only when we start nesting them that
> we run into problems, I think.

Wonderful! Now, let's see what else I can go bend... ;)

> No need to be tentative, though I appreciate a good will behind it.

Why, thank you.

> But don't worry, I'm not feeling threatened just because there's a real
> linguist on the premises.
> 
> Well, not much...  :-)

<chuckles> Larry Wall threatened by a geekette in the sidelines? What a
silly idea! :)

Well, I'll be interested to watch how topicalizers develop in Perl 6.
It's a really useful feature in human languages, and as far as I know,
Perl is the only computer language to use it. Very exciting.

Allison

Reply via email to