"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.