This is a simple implementation of type-level natural
numbers that only requires DeriveDataTypeable. Operations
requiring more language extensions have been split into a
separate package.
The difference between this package and the many
others on Hackage implementing type-level
naturals is its emphasis on simplicity. It only
supports non-negative natural numbers, and only
the successor and predicessor operations. It
represents natural numbers using a type-level
linked list, so it is not intended to be used for
representing large numbers. Pre-defined aliases
for natural numbers up to 15 are provided.
The code for this package was largely taken from
the excellent Vec package; I created this package
with the intent of making this functionality more
widely available.
Difference from 1.0: Added instances for Typeable, and
word synonyms for N0...N15.
Difference from 1.1: Performance enhancements for
naturalNumberAsInt. Simplified Show implementation.
Difference from 1.1.1: Gave up on Haskell 2010
compatibility since as of GHC 7.8 manually deriving from
Typeable is no longer allowed; now I use
DeriveDataTypeable to construct the instances.