packages feed

d10 1.0.1.0 → 1.0.1.1

raw patch · 3 files changed

+77/−73 lines, 3 filesdep ~basedep ~hashabledep ~hedgehogPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base, hashable, hedgehog, template-haskell

API changes (from Hackage documentation)

- D10.Char: charD10Either :: Char -> Either String D10
- D10.Char: charD10Fail :: MonadFail m => Char -> m D10
- D10.Char: charD10Maybe :: Char -> Maybe D10
- D10.Char: d10 :: QuasiQuoter
- D10.Char: d10Char :: D10 -> Char
- D10.Char: d10Exp :: Integer -> Q Exp
- D10.Char: d10Int :: D10 -> Int
- D10.Char: d10Integer :: D10 -> Integer
- D10.Char: d10ListExp :: String -> Q Exp
- D10.Char: d10ListPat :: String -> Q Pat
- D10.Char: d10Nat :: D10 -> Natural
- D10.Char: d10Num :: Num a => D10 -> a
- D10.Char: d10Pat :: Integer -> Q Pat
- D10.Char: d10Str :: D10 -> String
- D10.Char: d10list :: QuasiQuoter
- D10.Char: data D10
- D10.Char: intD10Either :: Int -> Either String D10
- D10.Char: intD10Fail :: MonadFail m => Int -> m D10
- D10.Char: intD10Maybe :: Int -> Maybe D10
- D10.Char: intMod10 :: Int -> D10
- D10.Char: integerD10Either :: Integer -> Either String D10
- D10.Char: integerD10Fail :: MonadFail m => Integer -> m D10
- D10.Char: integerD10Maybe :: Integer -> Maybe D10
- D10.Char: integerMod10 :: Integer -> D10
- D10.Char: integralD10Either :: Integral a => a -> Either String D10
- D10.Char: integralD10Fail :: (Integral a, MonadFail m) => a -> m D10
- D10.Char: integralD10Maybe :: Integral a => a -> Maybe D10
- D10.Char: integralMod10 :: Integral a => a -> D10
- D10.Char: natD10Either :: Natural -> Either String D10
- D10.Char: natD10Fail :: MonadFail m => Natural -> m D10
- D10.Char: natD10Maybe :: Natural -> Maybe D10
- D10.Char: natMod10 :: Natural -> D10
- D10.Char: strD10Either :: String -> Either String D10
- D10.Char: strD10Fail :: MonadFail m => String -> m D10
- D10.Char: strD10ListEither :: String -> Either String [D10]
- D10.Char: strD10ListFail :: MonadFail m => String -> m [D10]
- D10.Char: strD10ListMaybe :: String -> Maybe [D10]
- D10.Char: strD10Maybe :: String -> Maybe D10
- D10.Char.Arithmetic: (*) :: D10 -> D10 -> D10
- D10.Char.Arithmetic: (+) :: D10 -> D10 -> D10
- D10.Char.Arithmetic: (-) :: D10 -> D10 -> D10
- D10.Char.Conversions: charD10Either :: Char -> Either String D10
- D10.Char.Conversions: charD10Fail :: MonadFail m => Char -> m D10
- D10.Char.Conversions: charD10Maybe :: Char -> Maybe D10
- D10.Char.Conversions: d10Char :: D10 -> Char
- D10.Char.Conversions: d10Int :: D10 -> Int
- D10.Char.Conversions: d10Integer :: D10 -> Integer
- D10.Char.Conversions: d10Nat :: D10 -> Natural
- D10.Char.Conversions: d10Num :: Num a => D10 -> a
- D10.Char.Conversions: d10Str :: D10 -> String
- D10.Char.Conversions: intD10Either :: Int -> Either String D10
- D10.Char.Conversions: intD10Fail :: MonadFail m => Int -> m D10
- D10.Char.Conversions: intD10Maybe :: Int -> Maybe D10
- D10.Char.Conversions: intMod10 :: Int -> D10
- D10.Char.Conversions: integerD10Either :: Integer -> Either String D10
- D10.Char.Conversions: integerD10Fail :: MonadFail m => Integer -> m D10
- D10.Char.Conversions: integerD10Maybe :: Integer -> Maybe D10
- D10.Char.Conversions: integerMod10 :: Integer -> D10
- D10.Char.Conversions: integralD10Either :: Integral a => a -> Either String D10
- D10.Char.Conversions: integralD10Fail :: (Integral a, MonadFail m) => a -> m D10
- D10.Char.Conversions: integralD10Maybe :: Integral a => a -> Maybe D10
- D10.Char.Conversions: integralMod10 :: Integral a => a -> D10
- D10.Char.Conversions: natD10Either :: Natural -> Either String D10
- D10.Char.Conversions: natD10Fail :: MonadFail m => Natural -> m D10
- D10.Char.Conversions: natD10Maybe :: Natural -> Maybe D10
- D10.Char.Conversions: natMod10 :: Natural -> D10
- D10.Char.Conversions: strD10Either :: String -> Either String D10
- D10.Char.Conversions: strD10Fail :: MonadFail m => String -> m D10
- D10.Char.Conversions: strD10ListEither :: String -> Either String [D10]
- D10.Char.Conversions: strD10ListFail :: MonadFail m => String -> m [D10]
- D10.Char.Conversions: strD10ListMaybe :: String -> Maybe [D10]
- D10.Char.Conversions: strD10Maybe :: String -> Maybe D10
- D10.Char.Quotes: d10 :: QuasiQuoter
- D10.Char.Quotes: d10list :: QuasiQuoter
- D10.Char.Splices: d10Exp :: Integer -> Q Exp
- D10.Char.Splices: d10ListExp :: String -> Q Exp
- D10.Char.Splices: d10ListPat :: String -> Q Pat
- D10.Char.Splices: d10Pat :: Integer -> Q Pat
- D10.Char.Type: data D10
- D10.Char.Unsafe: D10_Unsafe :: Char -> D10
- D10.Char.Unsafe: instance Data.Hashable.Class.Hashable D10.Char.Unsafe.D10
- D10.Char.Unsafe: instance GHC.Classes.Eq D10.Char.Unsafe.D10
- D10.Char.Unsafe: instance GHC.Classes.Ord D10.Char.Unsafe.D10
- D10.Char.Unsafe: instance GHC.Enum.Bounded D10.Char.Unsafe.D10
- D10.Char.Unsafe: instance GHC.Enum.Enum D10.Char.Unsafe.D10
- D10.Char.Unsafe: instance GHC.Show.Show D10.Char.Unsafe.D10
- D10.Char.Unsafe: newtype D10
- D10.Num: charD10Either :: Num a => Char -> Either String (D10 a)
- D10.Num: charD10Fail :: (Num a, MonadFail m) => Char -> m (D10 a)
- D10.Num: charD10Maybe :: Num a => Char -> Maybe (D10 a)
- D10.Num: d10 :: QuasiQuoter
- D10.Num: d10Char :: Integral a => D10 a -> Char
- D10.Num: d10Exp :: Integer -> Q Exp
- D10.Num: d10Int :: Integral a => D10 a -> Int
- D10.Num: d10Integer :: Integral a => D10 a -> Integer
- D10.Num: d10ListExp :: String -> Q Exp
- D10.Num: d10ListPat :: String -> Q Pat
- D10.Num: d10Nat :: Integral a => D10 a -> Natural
- D10.Num: d10Num :: (Integral b, Num a) => D10 b -> a
- D10.Num: d10Pat :: Integer -> Q Pat
- D10.Num: d10Str :: Integral a => D10 a -> String
- D10.Num: d10list :: QuasiQuoter
- D10.Num: data D10 a
- D10.Num: intD10Either :: Num a => Int -> Either String (D10 a)
- D10.Num: intD10Fail :: (Num a, MonadFail m) => Int -> m (D10 a)
- D10.Num: intD10Maybe :: Num a => Int -> Maybe (D10 a)
- D10.Num: intMod10 :: Num a => Int -> D10 a
- D10.Num: integerD10Either :: Num a => Integer -> Either String (D10 a)
- D10.Num: integerD10Fail :: (Num a, MonadFail m) => Integer -> m (D10 a)
- D10.Num: integerD10Maybe :: Num a => Integer -> Maybe (D10 a)
- D10.Num: integerMod10 :: Num a => Integer -> D10 a
- D10.Num: integralD10Either :: (Num b, Integral a) => a -> Either String (D10 b)
- D10.Num: integralD10Fail :: (Num b, Integral a, MonadFail m) => a -> m (D10 b)
- D10.Num: integralD10Maybe :: (Num b, Integral a) => a -> Maybe (D10 b)
- D10.Num: integralMod10 :: (Num b, Integral a) => a -> D10 b
- D10.Num: natD10Either :: Num a => Natural -> Either String (D10 a)
- D10.Num: natD10Fail :: (Num a, MonadFail m) => Natural -> m (D10 a)
- D10.Num: natD10Maybe :: Num a => Natural -> Maybe (D10 a)
- D10.Num: natMod10 :: Num a => Natural -> D10 a
- D10.Num: strD10Either :: Num a => String -> Either String (D10 a)
- D10.Num: strD10Fail :: (Num a, MonadFail m) => String -> m (D10 a)
- D10.Num: strD10ListEither :: Num a => String -> Either String [D10 a]
- D10.Num: strD10ListFail :: (Num a, MonadFail m) => String -> m [D10 a]
- D10.Num: strD10ListMaybe :: Num a => String -> Maybe [D10 a]
- D10.Num: strD10Maybe :: Num a => String -> Maybe (D10 a)
- D10.Num.Arithmetic: (*) :: Integral a => D10 a -> D10 a -> D10 a
- D10.Num.Arithmetic: (+) :: Integral a => D10 a -> D10 a -> D10 a
- D10.Num.Arithmetic: (-) :: Integral a => D10 a -> D10 a -> D10 a
- D10.Num.Conversions: charD10Either :: Num a => Char -> Either String (D10 a)
- D10.Num.Conversions: charD10Fail :: (Num a, MonadFail m) => Char -> m (D10 a)
- D10.Num.Conversions: charD10Maybe :: Num a => Char -> Maybe (D10 a)
- D10.Num.Conversions: d10Char :: Integral a => D10 a -> Char
- D10.Num.Conversions: d10Int :: Integral a => D10 a -> Int
- D10.Num.Conversions: d10Integer :: Integral a => D10 a -> Integer
- D10.Num.Conversions: d10Nat :: Integral a => D10 a -> Natural
- D10.Num.Conversions: d10Num :: (Integral b, Num a) => D10 b -> a
- D10.Num.Conversions: d10Str :: Integral a => D10 a -> String
- D10.Num.Conversions: intD10Either :: Num a => Int -> Either String (D10 a)
- D10.Num.Conversions: intD10Fail :: (Num a, MonadFail m) => Int -> m (D10 a)
- D10.Num.Conversions: intD10Maybe :: Num a => Int -> Maybe (D10 a)
- D10.Num.Conversions: intMod10 :: Num a => Int -> D10 a
- D10.Num.Conversions: integerD10Either :: Num a => Integer -> Either String (D10 a)
- D10.Num.Conversions: integerD10Fail :: (Num a, MonadFail m) => Integer -> m (D10 a)
- D10.Num.Conversions: integerD10Maybe :: Num a => Integer -> Maybe (D10 a)
- D10.Num.Conversions: integerMod10 :: Num a => Integer -> D10 a
- D10.Num.Conversions: integralD10Either :: (Num b, Integral a) => a -> Either String (D10 b)
- D10.Num.Conversions: integralD10Fail :: (Num b, Integral a, MonadFail m) => a -> m (D10 b)
- D10.Num.Conversions: integralD10Maybe :: (Num b, Integral a) => a -> Maybe (D10 b)
- D10.Num.Conversions: integralMod10 :: (Num b, Integral a) => a -> D10 b
- D10.Num.Conversions: natD10Either :: Num a => Natural -> Either String (D10 a)
- D10.Num.Conversions: natD10Fail :: (Num a, MonadFail m) => Natural -> m (D10 a)
- D10.Num.Conversions: natD10Maybe :: Num a => Natural -> Maybe (D10 a)
- D10.Num.Conversions: natMod10 :: Num a => Natural -> D10 a
- D10.Num.Conversions: strD10Either :: Num a => String -> Either String (D10 a)
- D10.Num.Conversions: strD10Fail :: (Num a, MonadFail m) => String -> m (D10 a)
- D10.Num.Conversions: strD10ListEither :: Num a => String -> Either String [D10 a]
- D10.Num.Conversions: strD10ListFail :: (Num a, MonadFail m) => String -> m [D10 a]
- D10.Num.Conversions: strD10ListMaybe :: Num a => String -> Maybe [D10 a]
- D10.Num.Conversions: strD10Maybe :: Num a => String -> Maybe (D10 a)
- D10.Num.Quotes: d10 :: QuasiQuoter
- D10.Num.Quotes: d10list :: QuasiQuoter
- D10.Num.Splices: d10Exp :: Integer -> Q Exp
- D10.Num.Splices: d10ListExp :: String -> Q Exp
- D10.Num.Splices: d10ListPat :: String -> Q Pat
- D10.Num.Splices: d10Pat :: Integer -> Q Pat
- D10.Num.Type: data D10 a
- D10.Num.Unsafe: D10_Unsafe :: a -> D10 a
- D10.Num.Unsafe: instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (D10.Num.Unsafe.D10 a)
- D10.Num.Unsafe: instance GHC.Classes.Eq a => GHC.Classes.Eq (D10.Num.Unsafe.D10 a)
- D10.Num.Unsafe: instance GHC.Classes.Ord a => GHC.Classes.Ord (D10.Num.Unsafe.D10 a)
- D10.Num.Unsafe: instance GHC.Num.Num a => GHC.Enum.Bounded (D10.Num.Unsafe.D10 a)
- D10.Num.Unsafe: instance GHC.Real.Integral a => GHC.Enum.Enum (D10.Num.Unsafe.D10 a)
- D10.Num.Unsafe: instance GHC.Real.Integral a => GHC.Show.Show (D10.Num.Unsafe.D10 a)
- D10.Num.Unsafe: newtype D10 a
- D10.Predicate: isD10Char :: Char -> Bool
- D10.Predicate: isD10Int :: Int -> Bool
- D10.Predicate: isD10Integer :: Integer -> Bool
- D10.Predicate: isD10Integral :: Integral a => a -> Bool
- D10.Predicate: isD10ListStr :: String -> Bool
- D10.Predicate: isD10Nat :: Natural -> Bool
- D10.Predicate: isD10Str :: String -> Bool
- D10.Safe: D0 :: D10
- D10.Safe: D1 :: D10
- D10.Safe: D2 :: D10
- D10.Safe: D3 :: D10
- D10.Safe: D4 :: D10
- D10.Safe: D5 :: D10
- D10.Safe: D6 :: D10
- D10.Safe: D7 :: D10
- D10.Safe: D8 :: D10
- D10.Safe: D9 :: D10
- D10.Safe: charD10Either :: Char -> Either String D10
- D10.Safe: charD10Fail :: MonadFail m => Char -> m D10
- D10.Safe: charD10Maybe :: Char -> Maybe D10
- D10.Safe: d10Char :: D10 -> Char
- D10.Safe: d10Int :: D10 -> Int
- D10.Safe: d10Integer :: D10 -> Integer
- D10.Safe: d10ListExp :: String -> Q Exp
- D10.Safe: d10ListPat :: String -> Q Pat
- D10.Safe: d10Nat :: D10 -> Natural
- D10.Safe: d10Num :: Num a => D10 -> a
- D10.Safe: d10Str :: D10 -> String
- D10.Safe: d10list :: QuasiQuoter
- D10.Safe: data D10
- D10.Safe: intD10Either :: Int -> Either String D10
- D10.Safe: intD10Fail :: MonadFail m => Int -> m D10
- D10.Safe: intD10Maybe :: Int -> Maybe D10
- D10.Safe: intMod10 :: Int -> D10
- D10.Safe: integerD10Either :: Integer -> Either String D10
- D10.Safe: integerD10Fail :: MonadFail m => Integer -> m D10
- D10.Safe: integerD10Maybe :: Integer -> Maybe D10
- D10.Safe: integerMod10 :: Integer -> D10
- D10.Safe: integralD10Either :: Integral a => a -> Either String D10
- D10.Safe: integralD10Fail :: (Integral a, MonadFail m) => a -> m D10
- D10.Safe: integralD10Maybe :: Integral a => a -> Maybe D10
- D10.Safe: integralMod10 :: Integral a => a -> D10
- D10.Safe: natD10Either :: Natural -> Either String D10
- D10.Safe: natD10Fail :: MonadFail m => Natural -> m D10
- D10.Safe: natD10Maybe :: Natural -> Maybe D10
- D10.Safe: natMod10 :: Natural -> D10
- D10.Safe: strD10Either :: String -> Either String D10
- D10.Safe: strD10Fail :: MonadFail m => String -> m D10
- D10.Safe: strD10ListEither :: String -> Either String [D10]
- D10.Safe: strD10ListFail :: MonadFail m => String -> m [D10]
- D10.Safe: strD10ListMaybe :: String -> Maybe [D10]
- D10.Safe: strD10Maybe :: String -> Maybe D10
- D10.Safe.Arithmetic: (*) :: D10 -> D10 -> D10
- D10.Safe.Arithmetic: (+) :: D10 -> D10 -> D10
- D10.Safe.Arithmetic: (-) :: D10 -> D10 -> D10
- D10.Safe.Conversions: charD10Either :: Char -> Either String D10
- D10.Safe.Conversions: charD10Fail :: MonadFail m => Char -> m D10
- D10.Safe.Conversions: charD10Maybe :: Char -> Maybe D10
- D10.Safe.Conversions: d10Char :: D10 -> Char
- D10.Safe.Conversions: d10Int :: D10 -> Int
- D10.Safe.Conversions: d10Integer :: D10 -> Integer
- D10.Safe.Conversions: d10Nat :: D10 -> Natural
- D10.Safe.Conversions: d10Num :: Num a => D10 -> a
- D10.Safe.Conversions: d10Str :: D10 -> String
- D10.Safe.Conversions: intD10Either :: Int -> Either String D10
- D10.Safe.Conversions: intD10Fail :: MonadFail m => Int -> m D10
- D10.Safe.Conversions: intD10Maybe :: Int -> Maybe D10
- D10.Safe.Conversions: intMod10 :: Int -> D10
- D10.Safe.Conversions: integerD10Either :: Integer -> Either String D10
- D10.Safe.Conversions: integerD10Fail :: MonadFail m => Integer -> m D10
- D10.Safe.Conversions: integerD10Maybe :: Integer -> Maybe D10
- D10.Safe.Conversions: integerMod10 :: Integer -> D10
- D10.Safe.Conversions: integralD10Either :: Integral a => a -> Either String D10
- D10.Safe.Conversions: integralD10Fail :: (Integral a, MonadFail m) => a -> m D10
- D10.Safe.Conversions: integralD10Maybe :: Integral a => a -> Maybe D10
- D10.Safe.Conversions: integralMod10 :: Integral a => a -> D10
- D10.Safe.Conversions: natD10Either :: Natural -> Either String D10
- D10.Safe.Conversions: natD10Fail :: MonadFail m => Natural -> m D10
- D10.Safe.Conversions: natD10Maybe :: Natural -> Maybe D10
- D10.Safe.Conversions: natMod10 :: Natural -> D10
- D10.Safe.Conversions: strD10Either :: String -> Either String D10
- D10.Safe.Conversions: strD10Fail :: MonadFail m => String -> m D10
- D10.Safe.Conversions: strD10ListEither :: String -> Either String [D10]
- D10.Safe.Conversions: strD10ListFail :: MonadFail m => String -> m [D10]
- D10.Safe.Conversions: strD10ListMaybe :: String -> Maybe [D10]
- D10.Safe.Conversions: strD10Maybe :: String -> Maybe D10
- D10.Safe.Quotes: d10list :: QuasiQuoter
- D10.Safe.Splices: d10ListExp :: String -> Q Exp
- D10.Safe.Splices: d10ListPat :: String -> Q Pat
- D10.Safe.Type: D0 :: D10
- D10.Safe.Type: D1 :: D10
- D10.Safe.Type: D2 :: D10
- D10.Safe.Type: D3 :: D10
- D10.Safe.Type: D4 :: D10
- D10.Safe.Type: D5 :: D10
- D10.Safe.Type: D6 :: D10
- D10.Safe.Type: D7 :: D10
- D10.Safe.Type: D8 :: D10
- D10.Safe.Type: D9 :: D10
- D10.Safe.Type: data D10
- D10.Safe.Type: instance Data.Data.Data D10.Safe.Type.D10
- D10.Safe.Type: instance Data.Hashable.Class.Hashable D10.Safe.Type.D10
- D10.Safe.Type: instance GHC.Classes.Eq D10.Safe.Type.D10
- D10.Safe.Type: instance GHC.Classes.Ord D10.Safe.Type.D10
- D10.Safe.Type: instance GHC.Enum.Bounded D10.Safe.Type.D10
- D10.Safe.Type: instance GHC.Enum.Enum D10.Safe.Type.D10
- D10.Safe.Type: instance GHC.Generics.Generic D10.Safe.Type.D10
- D10.Safe.Type: instance GHC.Show.Show D10.Safe.Type.D10
+ AssertQFails: qFails :: Show a => Q a -> PropertyT IO ()
+ Fallible: Fallible :: Either String a -> Fallible a
+ Fallible: instance Control.Monad.Fail.MonadFail Fallible.Fallible
+ Fallible: instance GHC.Base.Applicative Fallible.Fallible
+ Fallible: instance GHC.Base.Functor Fallible.Fallible
+ Fallible: instance GHC.Base.Monad Fallible.Fallible
+ Fallible: instance GHC.Classes.Eq a => GHC.Classes.Eq (Fallible.Fallible a)
+ Fallible: instance GHC.Show.Show a => GHC.Show.Show (Fallible.Fallible a)
+ Fallible: newtype Fallible a

Files

+ changelog.md view
@@ -0,0 +1,7 @@+### 1.0.1.1 (2023-01-02)++Support GHC 9.4++### 1.0.1.0 (2022-03-22)++Start of changelog
d10.cabal view
@@ -1,58 +1,16 @@ cabal-version: 3.0  name: d10-version: 1.0.1.0+version: 1.0.1.1 category: Data synopsis: Digits 0-9  description:     Data types representing the digits zero through nine. -    == Modules-     Each of the following modules defines a different type named     @D10@, all of which are different representations of the same-    concept:--    * "D10.Char" - Defines a @D10@ type as a newtype for @Char@,-      where the values are restricted to characters between-      @'0'@ and @'9'@-    * "D10.Num" - Defines a @D10@ type as a newtype for any-      type with an instance of the @Num@ class, where the values-      are restricted to numbers between @fromInteger 0@ and-      @fromInteger 9@-    * "D10.Safe" - Defines a @D10@ type as @D0 | D1 | D2 | ... | D9@--    The @Arithmetic@ modules provide infix operators (@+@), (@-@), (@*@)-    for modular arithmetic:--    * "D10.Char.Arithmetic"-    * "D10.Num.Arithmetic"-    * "D10.Safe.Arithmetic"--    The following modules export constructors that can be used-    incorrectly:--    * "D10.Char.Unsafe"-    * "D10.Num.Unsafe"--    Functions to test whether values of various types represent-    digits in the range 0 to 9:--    * "D10.Predicate"--    == Quasi-quoters--    * The "D10.Char" and "D10.Num" modules include quasi-quoters-      named @d10@ used to express single digits. For example, 7-      can be written as @[d10|7|]@. This is an important feature-      because the @D10@ types defined in these modules have-      unsafe constructors, and the quasi-quoters provide-      compile-time assurance that we never construct a @D10@-      that represents a value outside the range 0 to 9.-    * "D10.Char", "D10.Num", and "D10.Safe" include quasi-quoters-      named @d10list@ to express lists of digits. For example,-      [4, 5, 6] can be written as @[d10list|456|]@.+    concept "D10.Char", "D10.Num", "D10.Safe".  homepage:    https://github.com/typeclasses/d10 bug-reports: https://github.com/typeclasses/d10/issues@@ -64,7 +22,7 @@ license: MIT license-file: license.txt -build-type: Simple+extra-source-files: *.md  source-repository head     type: git@@ -80,12 +38,9 @@  common library-dependencies     build-depends:-        base ^>= 4.13 || ^>= 4.14 || ^>= 4.15-          || ^>= 4.16-      , hashable ^>= 1.3 || ^>= 1.4-      , template-haskell-             ^>= 2.15 || ^>= 2.16 || ^>= 2.17-          || ^>= 2.18+        base ^>= 4.14 || ^>= 4.15 || ^>= 4.16 || ^>= 4.17+      , hashable ^>= 1.3.5 || ^>= 1.4+      , template-haskell ^>= 2.16 || ^>= 2.17 || ^>= 2.18 || ^>= 2.19  common test-language     import: language@@ -97,7 +52,7 @@     import: library-dependencies     build-depends:         d10-      , hedgehog ^>= 1.0.1 || ^>= 1.1+      , hedgehog ^>= 1.0.5 || ^>= 1.1 || ^>= 1.2  common test     import: test-language@@ -112,26 +67,26 @@     hs-source-dirs: src     exposed-modules:         D10.Char-          , D10.Char.Arithmetic-          , D10.Char.Conversions-          , D10.Char.Quotes-          , D10.Char.Splices-          , D10.Char.Type-          , D10.Char.Unsafe-      , D10.Num-          , D10.Num.Arithmetic-          , D10.Num.Conversions-          , D10.Num.Quotes-          , D10.Num.Splices-          , D10.Num.Type-          , D10.Num.Unsafe-      , D10.Safe-          , D10.Safe.Arithmetic-          , D10.Safe.Conversions-          , D10.Safe.Quotes-          , D10.Safe.Splices-          , D10.Safe.Type-      , D10.Predicate+            D10.Char.Arithmetic+            D10.Char.Conversions+            D10.Char.Quotes+            D10.Char.Splices+            D10.Char.Type+            D10.Char.Unsafe+        D10.Num+            D10.Num.Arithmetic+            D10.Num.Conversions+            D10.Num.Quotes+            D10.Num.Splices+            D10.Num.Type+            D10.Num.Unsafe+        D10.Safe+            D10.Safe.Arithmetic+            D10.Safe.Conversions+            D10.Safe.Quotes+            D10.Safe.Splices+            D10.Safe.Type+        D10.Predicate  library d10-test     import: test-language@@ -139,7 +94,7 @@     hs-source-dirs: library/d10-test     exposed-modules:         AssertQFails-      , Fallible+        Fallible  test-suite char     import: test
+ readme.md view
@@ -0,0 +1,42 @@+Data types representing the digits zero through nine.++## Modules++Each of the following modules defines a different type named `D10`, all of which+are different representations of the same concept:++* `D10.Char` - Defines a `D10` type as a newtype for `Char`, where the values+  are restricted to characters between `'0'` and `'9'`.++* `D10.Num` - Defines a `D10` type as a newtype for any type with an instance of+  the `Num` class, where the values are restricted to numbers between `fromInteger+  0` and `fromInteger 9`.++* `D10.Safe` - Defines a `D10` type as `D0 | D1 | D2 | ... | D9`.++The `Arithmetic` modules provide infix operators `(+)`, `(-)`, `(*)` for modular+arithmetic:++* `D10.Char.Arithmetic`+* `D10.Num.Arithmetic`+* `D10.Safe.Arithmetic`++The following modules export constructors that can be used incorrectly:++* `D10.Char.Unsafe`+* `D10.Num.Unsafe`++Functions to test whether values of various types represent digits in the range+0 to 9:++* `D10.Predicate`++## Quasi-quoters++Each module that defines a `D10` type also defines quasi-quoters for it. With+the `QuasiQuotes` GHC extension enabled, a single digit like *7* can be written+as `[d10|7|]`, and a list of digits like *[4,5,6]* can be written as+`[d10|456|]`. For `D10.Char` and `D10.Num`, the quasi-quoters are an important+feature, because the `D10` types defined in these modules have unsafe+constructors, and the quasi-quoters provide compile-time assurance that we never+construct a `D10` that represents a value outside the range *0* to *9*.