Consider the real numbers. They "are" a group. We have an
identity element `0', inverses and closure under the associative
operation `+'.
Group+ = (+, 0, -1 * _)
They are another group, too -- the group with `*':
Group* = (*, 1, 1 / _)
This seems like a real problem with the whole notion of
typeclasses -- we can't really say a set/type "is" its
extension with some new operations.
One road to go on this is to make every extension of the set
with new ops a different type; but that seems really horribly
inconvenient. I wonder what approaches have been tried here?
--
Jason Dusek
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe