A type checker plugin for GHC that can derive "complex" KnownNat
constraints from other simple/variable KnownNat constraints. i.e. without
this plugin, you must have both a KnownNat n and a KnownNat (n+2)
constraint in the type signature of the following function:
Using the plugin you can omit the KnownNat (n+2) constraint:
The plugin can derive KnownNat constraints for types consisting of:
Type variables, when there is a corresponding KnownNat constraint
Type-level naturals
Applications of the arithmetic expression: +,-,*,^
Type functions, when there is either:
a matching given KnownNat constraint; or
a corresponding KnownNat<N> instance for the type function
To use the plugin, add the
Pragma to the header of your file.