func(args) = ...
    func(args) += ...
    func(args) =~ s///

Such functions have been modeled in object models that accept
arg-list+operator (head+operator) polymorphic signatures. It would be
up to the programmer of func() to dictate what happens when func() is
invoked.

The following would be the pseudo-code (nothing to do with perl) that
simulates the operator as another argument.

overloadfunc...
func (operator:args){...}
func (+:args){...}
func (=:args){...}
func (+=:args){...}
func (=~:args){...}
func (args)

Which allows the following invocation:
a = func(args);
a = b + func(args);
a = func(args) + func(argt);
func(args) = a;
func(args) = func(argt) + func(argu);

However such an invocation is problematic:
func(argt) + func(argu) = anything else;

For such, I recommend that, for each LHS function create a thread. All LHS
threads would then have to cooperate to come to their individual resolution.
That would require multi-threading stability in Perl.

It is recommended to read the RFC in the perspective of object modeling in Perl.

Reply via email to