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

Module documentation for 0.2.1.6

This version can be pinned in stack with:d10-0.2.1.6@sha256:09432c6d07f10336e34fc41d3df9282210d8efa9a6c4fadcebbfbd0f38def4ba,2797

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