NumericPrelude-0.0: An experimental alternative hierarchy of numeric type classesContentsIndex
Number.ResidueClass.Check
Synopsis
data T a = Cons {
modulus :: !a
representative :: !a
}
factorPrec :: Int
(/:) :: C a => a -> a -> T a
isCompatible :: Eq a => T a -> T a -> Bool
maybeCompatible :: Eq a => T a -> T a -> Maybe a
fromRepresentative :: C a => a -> a -> T a
lift1 :: Eq a => (a -> a -> a) -> T a -> T a
lift2 :: Eq a => (a -> a -> a -> a) -> T a -> T a -> T a
errIncompat :: a
zero :: C a => a -> T a
one :: C a => a -> T a
fromInteger :: C a => a -> Integer -> T a
Documentation
data T a
The best solution seems to let modulus be part of the type. Then operations with non-matching moduli could be detected at compile time and zero and one could be generated with the correct modulus. An alternative trial can be found in module ResidueClassMaybe.
Constructors
Cons
modulus :: !a
representative :: !a
show/hide Instances
C a => C (T a)
(Eq a, C a) => C (T a)
(Eq a, C a) => C (T a)
(Eq a, C a) => C (T a)
Eq a => Eq (T a)
(Read a, C a) => Read (T a)
Show a => Show (T a)
factorPrec :: Int
(/:) :: C a => a -> a -> T a
r /: m is the residue class containing r with respect to the modulus m
isCompatible :: Eq a => T a -> T a -> Bool
Check if two residue classes share the same modulus
maybeCompatible :: Eq a => T a -> T a -> Maybe a
fromRepresentative :: C a => a -> a -> T a
lift1 :: Eq a => (a -> a -> a) -> T a -> T a
lift2 :: Eq a => (a -> a -> a -> a) -> T a -> T a -> T a
errIncompat :: a
zero :: C a => a -> T a
one :: C a => a -> T a
fromInteger :: C a => a -> Integer -> T a
Produced by Haddock version 0.7