indique/elm-bounded-nat/3.0.0

NOTE: the latest version is 13.0.0

Nat

type alias Nat range =
Nat range

A bounded natural number (>= 0).

-- >= 4
Nat (Min Nat4)


-- 2 <= nat <= 12
Nat (In Nat2 Nat12)


-- = 3
Nat (Only Nat3)


-- = 3, & 3, described as a difference
Nat (N Nat3 Is (Difference a To (Nat3Plus a)))


-- either one of the above
Nat range


-- Not constuctable
Nat Banana

transform

toInt : Nat range -> Int

Convert a Nat to an Int.

nat4 |> Nat.toInt --> 4
Nat.N.toIn nat4 |> Nat.toInt --> 4
Nat.N.toMin nat4 |> Nat.toInt --> 4


compare a b =
    compare (Nat.toInt a) (Nat.toInt b)