A newtype wrapper around Natural that ensures the value is within a given range.
Example:
:{ let validRange = mkRange 5 :: Maybe (Range 1 10) in case validRange of Just r -> "Valid range: " ++ show (unRange r) Nothing -> "Invalid range":}"Valid range: 5"
:{ let invalidRange = mkRange 15 :: Maybe (Range 1 10) in case invalidRange of Just r -> "Valid range: " ++ show (unRange r) Nothing -> "Invalid range":}"Invalid range"
decode "5" :: Maybe (Range 1 10)Just (MkRange {unRange = 5})
decode "15" :: Maybe (Range 1 10)Nothing
Instances11Bounded, Eq, Ord, Show, Ix, Generic, …
(KnownNat min, KnownNat max) => Bounded (Range min max)Defined in servant-0.20.3.0 · Servant.API.RangeEq (Range min max)Defined in servant-0.20.3.0 · Servant.API.RangeOrd (Range min max)Defined in servant-0.20.3.0 · Servant.API.RangeShow (Range min max)Defined in servant-0.20.3.0 · Servant.API.RangeIx (Range min max)Defined in servant-0.20.3.0 · Servant.API.RangeGeneric (Range min max)Defined in servant-0.20.3.0 · Servant.API.Range(KnownNat min, KnownNat max) => FromJSON (Range min max)Defined in servant-0.20.3.0 · Servant.API.RangeToJSON (Range min max)Defined in servant-0.20.3.0 · Servant.API.Range(KnownNat min, KnownNat max) => FromHttpApiData (Range min max)Defined in servant-0.20.3.0 · Servant.API.RangeToHttpApiData (Range min max)Defined in servant-0.20.3.0 · Servant.API.Rangetype Rep (Range min max) = D1 ('MetaDataDefined in servant-0.20.3.0 · Servant.API.Range"Range"
"Servant.API.Range"
"servant-0.20.3.0-LeMDEalWP10DLDzJx8GLCt"
'True) (C1 ('MetaCons"MkRange"
'PrefixI 'True) (S1 ('MetaSel ('Just"unRange"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)))