Consider 2+7 == 3+6 (mod 5). Can you some how use scala syntactic sugar to achieve the same in scala code?
Keep in mind that 2+7 and 3+6 are regular scala Int so overriding the + or == to be mod 5 doesn't work. I'm actually interested in more complex congruences on algebras A. I could do A.congruent(a,b)
, and write that with some nice symbols like A.~(a,b)
, but I am interested in a == b (A)
or a ==(A) b
or perhaps A(a == b)
. Something where the congruence appears inbetween the terms a and b.
The bottom line of my struggles is that the congruence is defined for type A
, and a
,b
are some elements passed to A
but not actually of type A
. E.g. A
might be a group of matrices and the congruence is if individual matrices a
and b
differ by a scalar i.e. a*b^-1=sI_n
. In particular, a
, b
will live inside of many groups and the congruence will change based on that. So I it isn't possible to simply add a reference within a
and b
back to A
.
Some how the right solution seems to be the mathematical one, label the equivalence with A
not the variables a
and b
. Yet scala syntactic sugar may not have such a sweetness in mind. Any suggestions appreciated.