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.