digit 0.1.1 → 0.1.2
raw patch · 4 files changed
+55/−9 lines, 4 filesdep +template-haskellPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: template-haskell
API changes (from Hackage documentation)
- Data.Digit.Digit: instance Bounded Digit
- Data.Digit.Digit: instance D0 Digit
- Data.Digit.Digit: instance D1 Digit
- Data.Digit.Digit: instance D2 Digit
- Data.Digit.Digit: instance D3 Digit
- Data.Digit.Digit: instance D4 Digit
- Data.Digit.Digit: instance D5 Digit
- Data.Digit.Digit: instance D6 Digit
- Data.Digit.Digit: instance D7 Digit
- Data.Digit.Digit: instance D8 Digit
- Data.Digit.Digit: instance D9 Digit
- Data.Digit.Digit: instance Enum Digit
- Data.Digit.Digit: instance Eq Digit
- Data.Digit.Digit: instance Ord Digit
- Data.Digit.Digit: instance Read Digit
- Data.Digit.Digit: instance Show Digit
- Data.Digit.Digit1_8: instance Bounded Digit1_8
- Data.Digit.Digit1_8: instance D1 Digit1_8
- Data.Digit.Digit1_8: instance D2 Digit1_8
- Data.Digit.Digit1_8: instance D3 Digit1_8
- Data.Digit.Digit1_8: instance D4 Digit1_8
- Data.Digit.Digit1_8: instance D5 Digit1_8
- Data.Digit.Digit1_8: instance D6 Digit1_8
- Data.Digit.Digit1_8: instance D7 Digit1_8
- Data.Digit.Digit1_8: instance D8 Digit1_8
- Data.Digit.Digit1_8: instance Eq Digit1_8
- Data.Digit.Digit1_8: instance Ord Digit1_8
- Data.Digit.Digit1_8: instance Read Digit1_8
- Data.Digit.Digit1_8: instance Show Digit1_8
- Data.Digit.Digit1_9: instance Bounded Digit1_9
- Data.Digit.Digit1_9: instance D1 Digit1_9
- Data.Digit.Digit1_9: instance D2 Digit1_9
- Data.Digit.Digit1_9: instance D3 Digit1_9
- Data.Digit.Digit1_9: instance D4 Digit1_9
- Data.Digit.Digit1_9: instance D5 Digit1_9
- Data.Digit.Digit1_9: instance D6 Digit1_9
- Data.Digit.Digit1_9: instance D7 Digit1_9
- Data.Digit.Digit1_9: instance D8 Digit1_9
- Data.Digit.Digit1_9: instance D9 Digit1_9
- Data.Digit.Digit1_9: instance Eq Digit1_9
- Data.Digit.Digit1_9: instance Ord Digit1_9
- Data.Digit.Digit1_9: instance Read Digit1_9
- Data.Digit.Digit1_9: instance Show Digit1_9
+ Data.Digit.Digit: digitQ :: QuasiQuoter
+ Data.Digit.Digit: instance Data.Data.Data Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D0.D0 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D1.D1 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D2.D2 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D3.D3 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D4.D4 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D5.D5 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D6.D6 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D7.D7 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D8.D8 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance Data.Digit.D9.D9 Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance GHC.Classes.Eq Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance GHC.Classes.Ord Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance GHC.Enum.Bounded Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance GHC.Enum.Enum Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance GHC.Read.Read Data.Digit.Digit.Digit
+ Data.Digit.Digit: instance GHC.Show.Show Data.Digit.Digit.Digit
+ Data.Digit.Digit1_8: instance Data.Data.Data Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D1.D1 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D2.D2 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D3.D3 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D4.D4 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D5.D5 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D6.D6 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D7.D7 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance Data.Digit.D8.D8 Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance GHC.Classes.Eq Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance GHC.Classes.Ord Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance GHC.Enum.Bounded Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance GHC.Enum.Enum Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance GHC.Read.Read Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_8: instance GHC.Show.Show Data.Digit.Digit1_8.Digit1_8
+ Data.Digit.Digit1_9: instance Data.Data.Data Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D1.D1 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D2.D2 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D3.D3 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D4.D4 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D5.D5 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D6.D6 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D7.D7 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D8.D8 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance Data.Digit.D9.D9 Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance GHC.Classes.Eq Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance GHC.Classes.Ord Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance GHC.Enum.Bounded Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance GHC.Enum.Enum Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance GHC.Read.Read Data.Digit.Digit1_9.Digit1_9
+ Data.Digit.Digit1_9: instance GHC.Show.Show Data.Digit.Digit1_9.Digit1_9
Files
- digit.cabal +2/−1
- src/Data/Digit/Digit.hs +45/−4
- src/Data/Digit/Digit1_8.hs +4/−2
- src/Data/Digit/Digit1_9.hs +4/−2
digit.cabal view
@@ -1,5 +1,5 @@ name: digit-version: 0.1.1+version: 0.1.2 license: BSD3 license-File: etc/LICENCE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>@@ -31,6 +31,7 @@ build-depends: base < 5 && >= 3 , lens >= 3.9.2+ , template-haskell ghc-options: -Wall
src/Data/Digit/Digit.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE NoImplicitPrelude, DeriveDataTypeable, TemplateHaskell, QuasiQuotes #-} -- | A data type with ten nullary constructors [0-9] and combinators. module Data.Digit.Digit@@ -10,9 +10,10 @@ -- * Prisms , digit , digitC+, digitQ ) where -import Prelude(Show(..), Read(..), Eq, Enum(..), Maybe(..), Bounded, Ord, Int, Char, (.))+import Prelude(Show(..), Read(..), Eq, Enum(..), Maybe(..), Bounded, Ord, Int, Char, (.), const, maybe, error) import Data.Digit.D0 import Data.Digit.D1 import Data.Digit.D2@@ -24,6 +25,10 @@ import Data.Digit.D8 import Data.Digit.D9 import Control.Lens+import Data.Data (Data)+import Data.Typeable (Typeable)+import Language.Haskell.TH+import Language.Haskell.TH.Quote -- $setup -- >>> import Prelude@@ -40,7 +45,7 @@ | D7 | D8 | D9- deriving (Eq, Ord, Enum, Bounded)+ deriving (Eq, Ord, Enum, Bounded, Data, Typeable) -- | Catamorphism for @Digit@. --@@ -190,7 +195,16 @@ Prism' Char Digit digitC = prism'- (let f = f in f)+ (\d -> case d of D0 -> '0'+ D1 -> '1'+ D2 -> '2'+ D3 -> '3'+ D4 -> '4'+ D5 -> '5'+ D6 -> '6'+ D7 -> '7'+ D8 -> '8'+ D9 -> '9') (\n -> case n of '0' -> Just D0 '1' -> Just D1 '2' -> Just D2@@ -229,3 +243,30 @@ [(D9, t)] readsPrec _ _ = []++-- | A QuasiQuoter for any range of @Digit@.+--+-- [digitQ|4|] :: Digit+-- 4+--+-- named [digitQ|4|] = "four"+-- named [digitQ|$x|] = "not four, " ++ show x ++ " instead"+--+-- mod10D x = let y = mod x 10 in [digitQ|$y|]+digitQ :: QuasiQuoter+digitQ = QuasiQuoter {+ quoteExp = dexp+ , quotePat = dpat+ , quoteType = error "not quotable"+ , quoteDec = error "not quotable"+ }++dexp :: [Char] -> ExpQ+dexp ('$':vn) = varE (mkName vn)+dexp (d:[]) = maybe (error "not a digit") (dataToExpQ (const Nothing)) (d ^? digitC)+dexp _ = error "not a digit"++dpat :: [Char] -> PatQ+dpat ('$':vn) = varP (mkName vn)+dpat (d:[]) = maybe (error "not a digit") (dataToPatQ (const Nothing)) (d ^? digitC)+dpat _ = error "not a digit"
src/Data/Digit/Digit1_8.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE NoImplicitPrelude, DeriveDataTypeable #-} -- | A data type with eight nullary constructors [1-8] and combinators. module Data.Digit.Digit1_8@@ -26,6 +26,8 @@ import Data.Digit.D7 import Data.Digit.D8 import Control.Lens+import Data.Data (Data)+import Data.Typeable (Typeable) -- $setup -- >>> import Prelude@@ -42,7 +44,7 @@ | D6 | D7 | D8- deriving (Eq, Ord, Bounded)+ deriving (Eq, Ord, Enum, Bounded, Data, Typeable) -- | Catamorphism for @Digit1_8@. --
src/Data/Digit/Digit1_9.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE NoImplicitPrelude, DeriveDataTypeable #-} -- | A data type with nine nullary constructors [1-9] and combinators. module Data.Digit.Digit1_9@@ -25,6 +25,8 @@ import Data.Digit.D8 import Data.Digit.D9 import Control.Lens+import Data.Data (Data)+import Data.Typeable (Typeable) -- $setup -- >>> import Prelude@@ -41,7 +43,7 @@ | D7 | D8 | D9- deriving (Eq, Ord, Bounded)+ deriving (Eq, Ord, Enum, Bounded, Data, Typeable) -- | Catamorphism for @Digit1_9@. --