natural is:package

Not on Stackage, so not searched. Natural number
Arithmetic of natural numbers A search for terms like arithmetic and natural on hackage reveals no shortage of libraries for handling the arithmetic of natural numbers. How is this library any different some of the others? It has a particular purpose: providing a foundation on top on which other libraries may define types indexed by sizes. This uses GHC's non-inductively-defined GHC.TypeNats.Nat. As a rule, this does not use unsafeCoerce internally anywhere. Perhaps the most direct competitor to `natural-arithmetic` is a typechecker plugin like type-nat-solver. The big difference is that `type-nat-solver` can really only be used in application code, not in library code. This is because libraries should not require the presence of typechecker plugins. Technically, they can (you could document it), but many developers will not use libraries that have unusual install procedures like this. This library, in places, requires users to use the TypeApplications language extension. This is done when a number is only need at the type level (without a runtime witness). This library uses a non-minimal core, providing redundant primitives in Arithmetic.Lt and Arithmetic.Lte. This is done in the interest of making it easy for user to assemble proofs. Recall that proof assembly is done by hand rather than by an SMT solver, so removing some tediousness from this is helpful to users. This library provides left and variants variants of several functions. For example, Arithmetic.Lte provides both substituteL and substituteR. This is only done when there are two variants of a function. For substitution, this is the case because we have `b = c, a ≤ b ==> a ≤ c` and `a = c, a ≤ b ==> c ≤ b`. So, we provide both substituteL and substituteR. However, for addition of inequalities, we have four possible variants: `a ≤ b, c ≤ d ==> a + c ≤ b + d`, `a ≤ b, c ≤ d ==> c + a ≤ b + d`, `a ≤ b, c ≤ d ==> a + c ≤ d + b`, `a ≤ b, c ≤ d ==> c + a ≤ d + b`. Consequently, we only provide a single plus function, and users must use Arithmetic.Plus.commutative to further manipulate the inequality. Here are the proof-manipulation vocabulary used by this library. Many of these terms are not standard, but we try to be consistent in this library:
  • Weaken: Increase an upper bound without changing the bounded value
  • Increment: Increase an upper bound along with the bounded value
  • Decrement: Decrease an upper bound along with the bounded value
  • Substitute: Replace a number with an equal number
A natural transformation package. A natural transformation transforms a container f a into another container g a. Natural transformations act as functor morphisms in category theory. The naming of ~>, :~> and $$ were taken, with permission, from Edward Kmett's indexed package.
Induction over natural numbers Induction over natural numbers
User-friendly text collation The built-in comparisons for textual data are based on Unicode ordinals. This does not match most every-day sorting algorithms. For example, "z10.txt" is sorted after "z2.txt" by users, but before it by naïve algorithms. This package provides an implementation of "natural sort", which more closely matches user expectations. See also: http://www.davekoelle.com/alphanum.html
Not on Stackage, so not searched. Natural numbers tagged with a type-level representation of the number.
Not on Stackage, so not searched. Natural numbers
Not on Stackage, so not searched. Natural-order string comparison
Not on Stackage, so not searched. Constructors and related functions for natural numbers
Not on Stackage, so not searched. Simple scoring schemes for word alignments
Not on Stackage, so not searched. Natural sorting for strings
Simple, Haskell 2010-compatible type level natural numbers This is a simple, Haskell 2010 compatible implementation of type-level natural numbers. Operations requiring non-Haskell 2010 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.
Type-level natural and proofs of their properties. Type-level natural numbers and proofs of their properties.
Not on Stackage, so not searched. High-level combinators for performing inductive operations.
Not on Stackage, so not searched. Basic operations on type-level natural numbers.
Not on Stackage, so not searched. A simple version type.
Not on Stackage, so not searched. FromDhall and ToDhall instances for version-natural.