d10

Digits 0-9 https://github.com/typeclasses/d10

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

MIT licensed by Chris Martin
Maintained by Chris Martin, Julie Moronuki

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

Changes

v0.1.0.0

  • Initial release

v0.1.0.1

  • Improve error messages when quasi-quoters are used in a non-expression context

v0.1.1.0

  • Add functions for generating Template Haskell expressions to be spliced, as alternatives to using the quasi-quoters

v0.2.0.0

  • Add Template Haskell splice patterns d10Pat and d10ListPat
  • Define quotePat for the quasi-quoters d10 and d10list, so they can now be used with pattern matching
  • Add Integral a constraint to d10 and d10list in the Data.D10.Num module, because this is needed for the definition of quotePat.

v0.2.0.1

  • Add CHANGELOG.md to package distribution

v0.2.1.0

  • Add functions mod-10 arithmetic functions: (+), (-), (*)

v0.2.1.2

  • Support GHC 8.8

v0.2.1.4

  • Support GHC 8.10

v0.2.1.6

  • Support doctest-0.17