Question: Operator overloading breaks existing functions

As a project I have found need to create a new type through the external calling interface of maple. To allow for easy use of this type I have been overloading the operators to handle this new type. Most of them seem to work quite well but I am having a problem that by overloading these operators some totally unrelated functions seem to break (even when not dealing with my new type). I've tried to isolate the problem and have gotten down to the following few lines. > seq(i^2,i=1..5): > a := module() export `=`; `=` := proc(lhs, rhs) option overload; return lhs=rhs; end proc; end module; > with(a); Warning, the protected name = has been redefined and unprotected > seq(i^2,i=1..5); Error, wrong number (or type) of parameters in function seq Interestingly enough simply unprotecting the operator and overriding it does not seem to cause this problem. In the actual code, I have an if statement that checks for my type on each side, and then returns either the typical lhs=rhs or my own custom equality testing routine. Perhaps that's not the way I should be attempting to overload these operators, but it's the only option I've seen.
Please Wait...