The type-level-natural-number package

[Tags:bsd3, library]

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.


Versions 1.0, 1.1, 1.1.1, 2.0
Dependencies base (>=3 && <5) [details]
License BSD3
Author Gregory Crosswhite
Maintainer Gregory Crosswhite <>
Category Type System, Data
Source repository head: git clone git://
this: git clone git:// 1.1.1)
Uploaded Sun Mar 30 18:38:47 UTC 2014 by GregoryCrosswhite
Distributions NixOS:2.0
Downloads 957 total (5 in the last 30 days)
0 []
Status Docs available [build log]
Successful builds reported [all 1 reports]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees