ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> perl6-language
perl6-language
Re: reduce metaoperator on an empty list
by Damian Conway other posts by this author
Jun 9 2005 3:30PM messages near this date
Re: reduce metaoperator on an empty list | Re: reduce metaoperator on an empty list
TSa (Thomas SandlaÃ?) wrote:

>  Let's assume that op is overloaded for two completely unrelated types
>  A and B, which are both defining their respective identity elements
>  but !(A.identval =:= B.identval). How should the &op multi method object
>  pick the correct one *without* looking at $value's type?

Your mistake is in thinking that the identity trait is on the operand type. It 
isn't; it's on the operator itself.


>  Or is the
>  intent to enforce a unique identity value for each operator like 0 for +
>  and 1 for *?

Almost. Remember that overloaded operators are also distinguishable by their 
operand types, so you can specify separate identity values for C<&infix:<+> (Num, 
Num)>  and C<&infix:<+>(Matrix, Matrix)>.


>  There's actually a second problem. Will the &op.does(identval) condition
>  be true or false if the &op multi contains some targets with and some
>  without an identval?

The op will have already been selected by the MMD mechanism before that question 
is asked.


>  Finally I don't understand how the knowledge about a pending assignment
>  eases the choice problem for the multi. Note that the choice of
>  assignment operator depends on the return value of the operator and
>  the type of which the lhs is undef.

The MMD mechanism sorts out which op is required, either by looking at the 
static type of the lhs variable, or by treating the undef as a coercion 
(Manhattan distance = 1)

Damian
Thread:
=22TSa_=28Thomas_Sandla=DF=29=22
Larry Wall
=22TSa_=28Thomas_Sandla=DF=29=22
Damian Conway
"TSa (Thomas Sandlaß)"

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved