Here we try to provide implementations for zero and one
by making the modulus optional.
We have to provide non-modulus operations for the cases
where both operands have Nothing modulus.
This is problematic since operations like '(/)'
depend essentially on the modulus.
A working version with disabled zero and one can be found ResidueClass.
|modulus :: !(Maybe a)||the modulus can be Nothing to denote a generic constant like zero and one which could not be bound to a specific modulus so far
|representative :: !a|
|r /: m is the residue class containing r with respect to the modulus m
|Check if two residue classes share the same modulus
|lift2 :: Eq a => (a -> a -> a -> a) -> (a -> a -> a) -> T a -> T a -> T a||Source|
|Produced by Haddock version 2.4.2|