"Larry Wall" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]

>  Unfortunately we can't just use topicalization to say
>
>     my Cat $tom = .new()
>
> because most people won't expect simple assignment to break their
> current topic.
>
> So another option is to replace = with something that I<does> set the
> topic for the right side.  If we used .= for that, then you'd have
> to write
>
[...]
>
> Another approach would be to have some kind of "microtopic" that
> represented the left side of an ordinary assignment.  Suppose for
> the sake of argument that the microtopic is ^.  Then you could write
>
>     @array = ^.sort;
>
> and a constructor would be
>
>     my Kanga $roo = ^.new()
>
> But that introduces a new concept that doesn't really generalize well.
> So forget that.

Why are we mixing the concepts of assignment and topicalization -- 
especially in a way that doesn't generalize. Why can't we invent a
"topicalization" operator, analogous to the old binding operator, that
simply sets its LHS as the topic of its RHS: and then have an assigning
version of that operator.

For example, lets use the "section" Unicode symbol: "§" to locally set the
current topic within an expression. Now we could say:

  $x = ( $foo § .a + .b + .c )

to mean

  $x = $foo.a + $foo.b + $foo.c

The assigning version of the operator could be

  $x §= .foo;
  my Dog $dog §= .new;


Dave.


Reply via email to