packages feed

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 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