numtype 1.0 → 1.0.1
raw patch · 3 files changed
+9/−7 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Numeric.NumType: instance Typeable Zero
+ Numeric.NumType: instance Typeable1 Neg
+ Numeric.NumType: instance Typeable1 Pos
Files
- Numeric/NumType.lhs +6/−4
- Numeric/NumTypeTests.hs +2/−2
- numtype.cabal +1/−1
Numeric/NumType.lhs view
@@ -46,6 +46,7 @@ > , FunctionalDependencies > , MultiParamTypeClasses > , FlexibleInstances+> , DeriveDataTypeable > #-} > {- |@@ -67,7 +68,7 @@ > , Succ, Negate, Sum, Div, Mul > -- Functions. > , toNum, incr, decr, negate, (+), (-), (*), (/)-> -- Data types.+> -- D)ata types. > , Zero, Pos, Neg > -- Type synonyms for convenience. > , Pos1, Pos2, Pos3, Pos4, Pos5, Neg1, Neg2, Neg3, Neg4, Neg5@@ -77,6 +78,7 @@ > import Prelude hiding ((*), (/), (+), (-), negate) > import qualified Prelude ((+), (-))+> import Data.Typeable (Typeable) Use the same fixity for operators as the Prelude. @@ -144,7 +146,7 @@ negative number in the sense of the previously defined type classes. 'Zero' corresponds to HList's 'HZero'. -> data Zero+> data Zero deriving Typeable > instance NumTypeI Zero where toNum _ = 0 > instance PosTypeI Zero > instance NegTypeI Zero@@ -152,7 +154,7 @@ Next we define the "successor" type, here called 'Pos' (corresponding to HList's 'HSucc'). -> data Pos n+> data Pos n deriving Typeable > instance (PosTypeI n) => NumTypeI (Pos n) where > toNum _ = toNum (undefined :: n) Prelude.+ 1 > instance (PosTypeI n) => PosTypeI (Pos n)@@ -165,7 +167,7 @@ Finally we define the "predecessor" type used to represent negative numbers. -> data Neg n+> data Neg n deriving Typeable > instance (NegTypeI n) => NumTypeI (Neg n) where > toNum _ = toNum (undefined :: n) Prelude.- 1 > instance (NegTypeI n) => NegTypeI (Neg n)
Numeric/NumTypeTests.hs view
@@ -11,7 +11,7 @@ -- Compares a type level unary function with a value level unary function -- by converting 'NumType' to 'Integral'. This assumes that the 'toIntegral' -- function is solid.-unaryTest :: (NumType n, NumType n', Num a)+unaryTest :: (NumType n, NumType n', Num a, Eq a, Show a) => (n -> n') -> (a -> a) -> n -> Test unaryTest f f' x = TestCase $ assertEqual "Unary function Integral equivalence"@@ -20,7 +20,7 @@ -- Compares a type level binary function with a value level binary function -- by converting 'NumType' to 'Integral'. This assumes that the 'toIntegral' -- function is solid.-binaryTest :: (NumType n, NumType n', NumType n'', Num a)+binaryTest :: (NumType n, NumType n', NumType n'', Num a, Eq a, Show a) => (n -> n' -> n'') -> (a -> a -> a) -> n -> n' -> Test binaryTest f f' x y = TestCase $ assertEqual "Binary function Integral equivalence"
numtype.cabal view
@@ -1,5 +1,5 @@ Name: numtype-Version: 1.0+Version: 1.0.1 License: BSD3 License-File: LICENSE Copyright: Bjorn Buckwalter 2009