{-# LANGUAGE EmptyDataDecls, ScopedTypeVariables #-}
module Math.Common.IntegerAsType where
class IntegerAsType a where
value :: a -> Integer
data M a b = M a b
instance (IntegerAsType a, IntegerAsType b) => IntegerAsType (M a b) where
value :: M a b -> Integer
value _ = a -> Integer
forall a. IntegerAsType a => a -> Integer
value (a
forall a. HasCallStack => a
undefined :: a) Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* b -> Integer
forall a. IntegerAsType a => a -> Integer
value (b
forall a. HasCallStack => a
undefined :: b)
data TMinus1
instance IntegerAsType TMinus1 where value :: TMinus1 -> Integer
value _ = -1
data TZero
instance IntegerAsType TZero where value :: TZero -> Integer
value _ = 0
data TOne
instance IntegerAsType TOne where value :: TOne -> Integer
value _ = 1
data T2
instance IntegerAsType T2 where value :: T2 -> Integer
value _ = 2
data T3
instance IntegerAsType T3 where value :: T3 -> Integer
value _ = 3
data T5
instance IntegerAsType T5 where value :: T5 -> Integer
value _ = 5
data T7
instance IntegerAsType T7 where value :: T7 -> Integer
value _ = 7
data T11
instance IntegerAsType T11 where value :: T11 -> Integer
value _ = 11
data T13
instance IntegerAsType T13 where value :: T13 -> Integer
value _ = 13
data T17
instance IntegerAsType T17 where value :: T17 -> Integer
value _ = 17
data T19
instance IntegerAsType T19 where value :: T19 -> Integer
value _ = 19
data T23
instance IntegerAsType T23 where value :: T23 -> Integer
value _ = 23
data T29
instance IntegerAsType T29 where value :: T29 -> Integer
value _ = 29
data T31
instance IntegerAsType T31 where value :: T31 -> Integer
value _ = 31
data T37
instance IntegerAsType T37 where value :: T37 -> Integer
value _ = 37
data T41
instance IntegerAsType T41 where value :: T41 -> Integer
value _ = 41
data T43
instance IntegerAsType T43 where value :: T43 -> Integer
value _ = 43
data T47
instance IntegerAsType T47 where value :: T47 -> Integer
value _ = 47
data T53
instance IntegerAsType T53 where value :: T53 -> Integer
value _ = 53
data T59
instance IntegerAsType T59 where value :: T59 -> Integer
value _ = 59
data T61
instance IntegerAsType T61 where value :: T61 -> Integer
value _ = 61
data T67
instance IntegerAsType T67 where value :: T67 -> Integer
value _ = 67
data T71
instance IntegerAsType T71 where value :: T71 -> Integer
value _ = 71
data T73
instance IntegerAsType T73 where value :: T73 -> Integer
value _ = 73
data T79
instance IntegerAsType T79 where value :: T79 -> Integer
value _ = 79
data T83
instance IntegerAsType T83 where value :: T83 -> Integer
value _ = 83
data T89
instance IntegerAsType T89 where value :: T89 -> Integer
value _ = 89
data T97
instance IntegerAsType T97 where value :: T97 -> Integer
value _ = 97