hi Martin,
On 03/13/2006 01:15 PM, Martin Rubey wrote:
Ralf Hemmecke <[EMAIL PROTECTED]> writes:
Hi Martin,
a quick response to the following...
There is a simple practical reason why I dislike the idea of asking just
"Integer has Monoid".
Imagine I'm programming a package, and I need that a parameter domain M is a
monoid, so that I can use the monoidal structure, for example for
multiplying. Well, then simply asking M has Monoid doesn't buy me anything,
since I won't be sure that M really is a Monoid with respect to "+".
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?
If
Monodid: Category == with{ 1:%; *:(%,%)->%; }
then "M has Monoid" means that M has a 1 and *.
By now, we all know that if "M has Monoid" returns false, it does NOT
mean that M is not an object in the category of (mathematical) monoids.
It is as simple as this "Monoid" in Axiom does NOT stand for the
category of all monoids.
Ralf
_______________________________________________
Axiom-developer mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-developer