d10
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:
Data.D10.Char
- Defines a D10
type as a newtype for Char
,
where the values are restricted to characters between '0'
and
'9'
.
Data.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
.
Data.D10.Safe
- Defines a D10
type as
D0 | D1 | D2 | ... | D9
.
Other modules:
Data.D10.Predicate
- Functions to test whether values of
various types represent digits in the range 0 to 9.
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 Data.D10.Char
and Data.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. For Data.D10.Safe
, the quasi-quoter is
offered merely as a possible convenience, allowing you to write
[d10|456789|]
in place of the somewhat longer expression
[D4,D5,D6,D7,D8,D9]
.