Martin Rubey <address@hidden> writes:
[...]
 > Imagine you could ask "if M has Monoid(+)..." or "if M has
 > Monoid(*)...". According to which returns true, you would then go on and
call
 > (m1 +$M m2) or (m1 *$M m2). Well, but M might have a monoid structure with
 > respect to the operation ".". Do you really also want to ask "if M has
 > Monoid(.)..."? That soon becomes impractical.

 No, this is not an issue about practicality.

 Look at it this way: Suppose "M has Monoid" returns "true". How do you know
 then with respect to which operation M is a monoid? What can you do with the
 information that M is a monoid with respect to some operation?
Exactly!
If we had access to Aldor compiler sources, it would helpful to
experiment with these ideas.