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.
But here the question to our category theory experts:
Since Monoid is something like (*,1) would it make sense to speak of a
category (in the mathematical sense) of
monoids that have * and 1 as their operations (1)
? Morphisms would respect 1 not just the identity element with respect
to *. And for each morphism f we would have f(a*b) = f(a)*f(b). Of
course as operations the two * above are different but in that category
they have to have the same name. (No idea whether this makes sense, but
it seems that this is the way as "Category" it is implemented in
Axiom/Aldor.)
Then, of course, (N, +, 0) is not an object in the category given by (1).
Ralf
_______________________________________________
Axiom-developer mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-developer