HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulefinite-typelits-0.2.0.0Haskell2010

Data.Finite

  • 1 type
  • 38 values
typetype Finite = Finite Integer
#

Finite number type. The type Finite n is inhabited by exactly n values in the range [0, n) including 0 but excluding n. Invariants:

Property
getFinite x < natVal x
Property
getFinite x >= 0
valueshift :: Finite n -> Finite (n + 1)
#

Add one inhabitant in the beginning, shifting everything up by one.

valueunshift :: Finite (n + 1) -> Maybe (Finite n)
#

Remove one inhabitant from the beginning, shifting everything down by one. Returns Nothing if the input was the removed inhabitant.

valueunshiftN :: (KnownNat n, KnownNat m) => Finite n -> Maybe (Finite m)
#

Remove multiple inhabitants from the beginning, shifting everything down by the amount of inhabitants removed. Returns Nothing if the input was one of the removed inhabitants.